1

Webサイトで使用されるエンティティクラスの基本的な操作を公開するデータアクセスクラスがあります。

public class UserDataAccessService {

   public User login(User u)...
   public User findByUsername(String username)...

このデータアクセスクラスですべてのHQL/SQLクエリを定義したいのですが、休止状態の@NamedQueryアノテーションを使用できません。Hibernateは、名前付きクエリが見つからないと言い続けます。エンティティクラスにルックアップ/検索メソッドを定義するつもりはありません。それが適切な場所であるとは思わないからです。

アノテーションとhibernate.cfg.xmlのみを使用しているので、Hibernateがそれらを見つけられるように、これらのクエリをどこで宣言できますか?

4

2 に答える 2

1

DAO に @MappedSuperclass のアノテーションを付けると、NamedQueries を DAO に入れることができます。DAO または DAO クラス自体のパッケージを、Hibernate 構成の注釈付きパッケージ/クラスのリストに追加することを忘れないでください。

于 2012-01-05T10:23:49.440 に答える
0

それぞれの XML マッピング ファイルにクエリを記述できます。

//---
<query name="findUser"><![CDATA[select o from User o]]>
</query>
//---

編集 :

名前付きネイティブ クエリ:

<sql-query name="findUser">
<return alias="user" class="com.User"/>
//-- native query
</sql-query>

ドキュメントから:

名前付き SQL クエリはマッピング ドキュメントで定義でき、名前付き HQL クエリとまったく同じ方法で呼び出すことができます。

これらのクエリは、それぞれのマッピング (hbm.xml) ファイルに配置する必要があります。

于 2011-03-13T10:31:18.363 に答える