Java 如何获取Hibernate entityManager.createNamedQuery结果
我正在使用Hibernate4.0 我的DAO类中有如下方法,其中方法返回实体类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
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
asQuery 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);