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