如何获取Hibernate entityManager.createNamedQuery结果

时间:2013-02-17 17:41:31

标签: java hibernate jpa jpa-2.0

我正在使用Hibernate 4.0

我的DAO类中的方法如下所示,其中方法返回实体类Employees。 我正在调用返回sys_refcursor的Oracle函数。如何在以下方法中返回entityManager.createNamedQuery

非常感谢任何帮助。

@Override
     public Employees getEmployeeRecords(String employeeNumber) {

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

     }

2 个答案:

答案 0 :(得分:5)

看到我喜欢这个

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

答案 1 :(得分:1)

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

ResultSet result = entityManager.createNativeQuery("Your_SQL_function").getSingleResult();

另一方面,'entityManager.createNamedQuery(“defined-query-name”)' 应该在代码执行之前定义其查询(在persistance配置或类注释中)。 例: 在你的班上

@NamedQuery(id="findFirstEmployee" query="from Employees e where id = 1")

您的代码应如下所示:

public Employees getEmployeeRecords(String employeeNumber) {

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

参考文献: http://www.oracle-base.com/articles/misc/using-ref-cursors-to-return-recordsets.php