どのようにJPA NamedQuery注釈を入れることでエンティティクラスを決めるのですか?
-
18-09-2019 - |
質問
私が顧客持って言う - 。CustomerOrderが、各注文の合計値を保持すると1対多の双方向の関係をCustomerOrderが
私は特定の顧客のためにすべての注文の合計値を検索するクエリを持っていた場合:
select SUM(o.orderValue) from CustomerOrder o where o.customer = :customer
これは注釈が付けられたエンティティクラスに重要ですか?なぜあなたは、どちらか一方でそれを置くでしょうか?
解決
あなたはそれを呼び出すためにこれは注釈が付けられたエンティティクラスに重要ですか?
name
の@NamedQuery
を使用すると、技術的な観点から、それは問題ではありません。
なぜあなたは、どちらか一方でそれを置くでしょうか?
しかし、ビューの「論理的」観点から、「自然」であるが、間違いなく、メンテナンスを容易にします属し@NamedQuery
を置きます。クエリが のですので、あなたの例では、私はCustomerOrder
を見つけることについてCustomerOrder
エンティティにクエリをかけることになり、これは私がそれを見ていた場合、私はそれを見つけることを期待したいだけの場所です。
他のヒント
これは問題ではありません。
一般的な原則は、それが論理的に属しているそれをどこに置くことです。あなたのケースでは - それは、より良いCustomerOrder
になると思います。
persistence.xmlで宣言されるべきXMLマッピングファイルでそれらを置きます。この偉大なリンクを参照してください: arjan -tijms.omnifaces.org/2010/09/where-to-put-named-queries-in-jpaする
クエリの多くは、「自然に」エンティティに属していない(と、さらにあなたがそれらをそこに置けば、あなたは新しいクエリを必要とするたびに、エンティティコードを変更する必要があり)ます。