Java 如何获取Hibernate entityManager.createNamedQuery结果

Java 如何获取Hibernate entityManager.createNamedQuery结果,java,hibernate,jpa,jpa-2.0,Java,Hibernate,Jpa,Jpa 2.0,我正在使用Hibernate4.0 我的DAO类中有如下方法,其中方法返回实体类Employees。 我正在调用一个Oracle函数,该函数返回sys\u refcursor。如何在下面的方法中返回entityManager.createNamedQuery 非常感谢您的帮助 @Override public Employees getEmployeeRecords(String employeeNumber) { <??> = entityManage

我正在使用Hibernate4.0

我的DAO类中有如下方法,其中方法返回实体类
Employees
。 我正在调用一个Oracle函数,该函数返回
sys\u refcursor
。如何在下面的方法中返回
entityManager.createNamedQuery

非常感谢您的帮助

@Override
     public Employees getEmployeeRecords(String employeeNumber) {

         <??> = entityManager.createNamedQuery("myfunction");
     return <??>;

     }
@覆盖
公共雇员getEmployeeRecords(字符串employeeNumber){
=entityManager.createNamedQuery(“myfunction”);
返回;
}

您可能对“entityManager.createNativeQuery(“SQL语法查询”)感兴趣 其中可以执行SQL语法查询。返回的数据类型为“ResultSet”

另一方面,“entityManager.createNamedQuery(“定义的查询名称”)” 应该在代码执行之前(在持久性配置或类注释中)提前定义其查询。 例子: 在你们班上最好

@NamedQuery(id=“findfirstempoyee”query=“from Employees e,其中id=1”)

您的代码应该如下所示:

public Employees getEmployeeRecords(String employeeNumber) {

    Emloyee result = entityManager.createNamedQuery("findFirstEmployee").getSingleResult();
 return result;

参考资料: 看,我确实喜欢这个

Query query = em.createQuery("SELECT e FROM Employee e WHERE e.name = :name ");
query.setParameter("name", name);

List<Employee> results = query.getResultList();
return results;
return results.get(0);
问候


Anshul

似乎您正在从Hibernate调用一个存储过程,可以看到@Genzer的答案。我的问题是,如果我使用
Query
as
Query Query Query=entityManager.createNamedQuery(“getFunc”);Query.getResultList()
我如何将其转换为
员工
?因为我的方法返回类型是
员工
当您在
员工
实体上声明
名称请求
时,请指定属性
resultClass=Employee.class
的值,然后在调用
查询.getResultList()时
,它将返回一个
列表
,就像
NamedQuery
。尽管您必须显式地强制转换它。@Genzer我已经定义了
resultClass=Employees.class
。所以现在我可以强制转换为
Employees e=(Employees)query.getSingleResult()是的。请注意,您还需要实现存储过程来返回映射到
员工
实体的值。
return results.get(0);