0
私はエイリアスを使用しているので、他のテーブルを参照するフィールドを持つエンティティのリストを選択する基準を使用しています。問題は、私が結合フィールドにアクセスしようとすると、休止状態は別の選択をデータベースに実行するということです。これは実際には効果がありません。これは各結果行に対して1つのクエリを実行するためです。結合されたフィールドにアクセスするHibernateの基準
誰も私になぜこれが起こっているのか教えてもらえますか? (唯一の関連する行に減少)基準の
使い方
List<Country> list = session.createCriteria(Country.class)
.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
.createAlias("locations", "location")
.list();
for (Countries cntry : list){
cntry.getLocations().size(); // here hibernate execute another query
}
国(重要な部分)
@Entity
public class Country {
// other fields as uuid etc.
@OneToMany(fetch = FetchType.LAZY, mappedBy = "country")
private List<Location> locations;
// getters and setters
}
場所(重要な部分)
@Entity
public class Location {
// other fields as uuid etc.
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "COUNTRY_UUID")
private Country country;
// getters and setters
}
クエリは、すべての結合テーブルのすべてのフィールドを結合しましたが、これらのフィールドは設定されていないように見えます。フェッチモードの設定が役に立たなかった:( – cici
あなたの問題はあなたのフェッチモードに間違いありません。どのバージョンのHibernateを使用していますか?古いバージョンのFetchMode.EAGERが必要です。 – teacurran