CriteriaQueryに明示的に通知せずにManyToOne関係を読み込ませるのに問題があり、これを機能させるためにクエリでエンティティ注釈を複製する必要があるのは非常に奇妙に思えます。
JPA + Hibernate (hibernate-jpa-2.0-api) を使用するアプリケーションがあります。
私のエンティティComputerは、他のフィールドとは別に、関係が含まれています。
@ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "employee", nullable = false) private Employee employee = null;
私の知る限り、Computerエンティティをロードすると、それに関連するEmployeeが同じクエリに自動的にロードされるはずですが、CriteriaQueryを使用してComputerをロードすると、そのようには機能しません。つまり、javax.persistence.criteria.CriteriaQueryを作成して実行すると、次の 2 つの異なるクエリが表示されます。
- コンピューターを取得するための 1 つ
- 従業員を取得するための別のもの(使用する前であっても..つまり、熱心な注釈のためにこのエンティティをロードしているようです)
私の観点からは、これは同じクエリで行う必要がありますが、これを機能させるために何をすべきかわかりません。「.fetch("employee")」を条件クエリに追加すると機能しますが、そのようにしてクエリのエンティティの構成を複製しているため、メンテナンスの観点からすると、これは解決策ではありません。
この動作は正常ですか?変更できますか?
ありがとう