我正在使用Hibernate 4.0
我的DAO类中的方法如下所示,其中方法返回实体类Employees
。
我正在调用返回sys_refcursor
的Oracle函数。如何在以下方法中返回entityManager.createNamedQuery
?
非常感谢任何帮助。
@Override
public Employees getEmployeeRecords(String employeeNumber) {
<??> = entityManager.createNamedQuery("myfunction");
return <??>;
}
答案 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