2

Hibernate4.0を使用しています

私のDAOクラスには、次のようなメソッドがあります。ここで、メソッドはEntityクラスを返しEmployeesます。を返すOracle関数を呼び出していますsys_refcursorentityManager.createNamedQuery以下のメソッドに戻るにはどうすればよいですか?

どんな助けでも大歓迎です。

@Override
     public Employees getEmployeeRecords(String employeeNumber) {

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

     }
4

2 に答える 2

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;

ここで私は従業員タイプのリストを返しています、あなたが1つのオブジェクトを送りたいなら、このようにしてください

return results.get(0);

よろしく

アンシュル

于 2013-02-18T06:23:16.780 に答える
2

SQL 構文クエリを実行できる "entityManager.createNativeQuery("SQL Syntax query") に興味があるかもしれません。返されるデータ型は "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;

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

于 2013-02-17T19:00:13.270 に答える