Долгое время бился над этим, но все-таки нащел решение.
Использовал:
NetBeans 9.2 RC2
JDBC MSQSQL version 3
Пример:
1. Класс сушности
package model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import org.eclipse.persistence.annotations.Direction;
import org.eclipse.persistence.annotations.NamedStoredProcedureQuery;
import org.eclipse.persistence.annotations.StoredProcedureParameter;
@Entity
@NamedStoredProcedureQuery(name = "rpt_ret_test",
resultClass = MyEntity.class,
returnsResultSet = true,
procedureName = "rpt_ret_test",
parameters = {
@StoredProcedureParameter(name = "item",
queryParameter = "item", direction = Direction.IN, type = String.class)
})
public class MyEntity implements Serializable {
@Id
@Column(name = "item")
private String item;
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
}
2. Класс фасада
package controller;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import model.MyEntity;
@Stateless
public class MyEntityFacade {
@PersistenceContext(unitName = "ewqPU")
private EntityManager em;
public Listcustomize()
throws Exception {
try {
Query query = em.createNamedQuery("rpt_ret_test");
query.setParameter("item", "sdsds Мой тестовый параметр :)");
return query.getResultList();
} catch (Exception ex) {
throw ex;
}
}
}
3. Класс предоставления данных (ViewEntity)
package controller;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import model.MyEntity;
@ManagedBean(name = "MyEntityView")
@RequestScoped
public class MyEntityView {
@EJB
private MyEntityFacade myEntityFacade;
public ListgetMyEntityFacade() throws Exception {
return myEntityFacade.customize();
}
}
4. Вывод данных на экран
в xhtml через баловый вывод JSF Entity Data table
P.S: Заработало толька на GlassFishe который щел в комплекте с NetBeans 6.9 RC2
в остальных случиях шли непонятные ошибки.
не забывайте в процедурах писать SET NOCOUNT ON ;)
Тест выполняемой процедуры
Create Procedure dbo.RPT_RET_test (@Item NVARCHAR(50))
AS
BEGIN
SELECT @item
END
PS: так как вывод быдет произведен 1 раз можно не писать SET NOCOUNT ON
Комментариев нет:
Отправить комментарий