フィルタリングされた「Trainer」エンティティを取得していますが、コレクション (trainedMonkeys) はフィルタリングされていません。「trainedMonkeys」変数は、「isThumb = true」のオブジェクトだけを保持するのではなく、すべての「Monkey」オブジェクトを保持しています。
私が使用している以下の基準が正しいかどうか誰かが確認できますか?
@SuppressWarnings("unchecked")
public List<Trainer> listTrainers() {
Criteria crit = sessionFactory.getCurrentSession().createCriteria(Trainer.class)
.createAlias("trainedMonkeys", "tm")
.add(Restrictions.eq("tm.isThumb", true))
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
トレーナー.java
public class Trainer {
private Long trainerId;
private String trainerName;
public List<Monkey> trainedMonkeys;
モンキー.java
public class Monkey {
private Long id;
private String monkeyName;
private boolean isThumb;
コントローラーで以下のコードを実行していますが、
for (Trainer trainer : trainerList){
System.err.println("<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>");
System.err.println("Trainer ID*****"+trainer.getTrainerId());
System.err.println("Trainer Name******"+trainer.getTrainerName());
monkeyList = trainer.getTrainedMonkeys();
for (Monkey monkey : monkeyList){
System.err.println("Monkey ID*****"+monkey.getId());
System.err.println("Monkey Name*****"+monkey.getMonkeyName());
}
System.err.println("<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>");
}
出力は次のとおりです (Monkey_2 と Monkey_6 のみが基準を満たすため、存在する必要がある唯一のオブジェクトです) 助けてください。
<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>
Trainer ID*****88
Trainer Name******TrainerSachin
Monkey ID*****87
Monkey Name*****Monkey_1
Monkey ID*****88
Monkey Name*****Monkey_2
Monkey ID*****89
Monkey Name*****Monkey_3
<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>
Trainer ID*****89
Trainer Name******TrainerVinod
Monkey ID*****90
Monkey Name*****Monkey_5
Monkey ID*****91
Monkey Name*****Monkey_6
Monkey ID*****92
Monkey Name*****Monkey_7
<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>