私は2つのエンティティUserとAddressを持っています。ユーザーには「アドレス」プロパティがあります。Criteriaとフェッチタイプを使用した問題
@OneToMany (mappedBy="user", fetch=FetchType.EAGER)
public List<Adress> getAddress() {
return this.address;
}
public void setAddress(List<Adress> address) {
this.address= address;
}
フェッチタイプは上記のとおりです。
私は次のようにユーザーのリストを取得するために基準を使用しようとしている:
List<User> p=session.createCriteria(User.class).list();
ユーザーが複数のアドレスを持っている場合残念ながら、それは繰り返しのユーザーを取得します。 eager fetchingがオフになっていると、重複して取得されません。どのように基準を使用して繰り返し項目なしのユーザーのリストを取得できますか?
私はユーザーリストを取得するほとんどすべての方法でeager fetchingが必要です。そうでなければ、セッションが開いていないという例外が多く発生します。とにかく、私はあなたが言うように、クエリごとにそれをやっていますが、問題は依然として残っています。説明と私の修正のために – cracq
+1。 –
@cracq:Eagerフェッチは、LazyInitializationExceptionsの間違った解決策です。これらを修正する方法については、[私の答えはこちら](http://stackoverflow.com/questions/6709750/proper-usage-of-spring-mvc-3-with-hibernate-spring-orm/6710885#6710885)を参照してください。 「セッション管理」を見てください。あなたはまた、[この回答]を見つけるかもしれません(http://stackoverflow.com/questions/6722158/best-way-to-handle-hibernate-sessions-in-a-layered-spring-mvc-web-application/6723767#6723767 )有用です。 –