4

Customer - CustomerOrder 各注文の合計値を保持する CustomerOrder との 1 対多の双方向関係があるとします。

特定の顧客のすべての注文の合計金額を検索するクエリがあるとします。

select SUM(o.orderValue) from CustomerOrder o where o.customer = :customer

これに注釈が付けられているエンティティ クラスは重要ですか? なぜあなたはそれをどちらか一方に入れるのですか?

4

3 に答える 3

2

これに注釈が付けられているエンティティ クラスは重要ですか?

name技術的な観点からは、 a のを使用し@NamedQueryて呼び出すので問題ありません。

なぜあなたはそれをどちらか一方に入れるのですか?

しかし、「論理的」な観点からは、@NamedQuery「当然」所属する場所を指定すると、メンテナンスが確実に容易になります。あなたの例では、クエリ検索に関するものでCustomerOrderあるため、エンティティにクエリを配置します。これは、検索する必要がある場合にそれを見つけることが期待される場所です。CustomerOrder

于 2010-01-05T23:12:18.350 に答える
1

それらを、persistence.xml で宣言する必要がある XML マッピング ファイルに入れます。この素晴らしいリンクを参照してください: arjan-tijms.omnifaces.org/2010/09/where-to-put-named-queries-in-jpa

多くのクエリはエンティティに「自然に」属していません (さらに、新しいクエリが必要になるたびにエンティティ コードを変更する必要があります)。

于 2010-12-15T23:34:01.967 に答える
1

それは問題ではありません。一般的な原則は、論理的に属する場所に配置することです。あなたの場合-入った方がいいCustomerOrder

于 2010-01-05T23:05:45.597 に答える