2

我正在使用休眠 4.0

我的 DAO 类中有如下方法,其中方法返回 Entity 类Employees。我正在调用一个返回的 Oracle 函数sys_refcursor。如何entityManager.createNamedQuery在下面的方法中返回?

非常感谢任何帮助。

@Override
     public Employees getEmployeeRecords(String employeeNumber) {

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

     }
4

2 回答 2

5

see i do like this

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

List<Employee> results = query.getResultList();
return results;

here i am returning list of Employee type , if you want to send one object then do like this

return results.get(0);

Regards

Anshul

于 2013-02-18T06:23:16.780 回答
2

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

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

另一方面,'entityManager.createNamedQuery("defined-query-name")' 应该在代码执行之前定义其查询(在持久性配置或类注释中)。示例:在您的班级中名列前茅

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

您的代码应如下所示:

public Employees getEmployeeRecords(String employeeNumber) {

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

References: http://www.oracle-base.com/articles/misc/using-ref-cursors-to-return-recordsets.php

于 2013-02-17T19:00:13.270 回答