休止状態 3.0 を使用しています。以下は、データをフェッチするために書かれた基準です。
1. Criteria criteria = session.createCriteria(Document.class);
2. criteria.setMaxResults(10);
3. criteria.setFetchMode("metadata",FetchMode.join);
4. criteria.setFetchMode("activitySchedules", FetchMode.JOIN);
5. criteria.setFetchMode("activitySchedules.activities",FetchMode.JOIN);
6. criteria.setResultTransformer(criteria.DISTINCT_ROOT_PROPERTY);
7. criteria.list();
この基準では、setMaxResults(10)は機能していません。定義された 10 の制限に対して 1 つの結果しか与えていません。20 の場合は 2 となります。4 行目をコメントすると、結果が適切に表示されます。私はこの奇妙な振る舞いをしていません。MAP の取得に問題がありますか? 誰かがこれについて知っているなら、私に知らせてください。
BeanStructre :
ドキュメント.java
private NormMaster metadata;
private Map<TransactionFlowEnum, ActivitySchedule> activitySchedules;
public NormMaster getMetadata(){
return metadata;
}
public void setMetadata(NormMaster metadata){
this.metadata = metadata;
}
public Map<TransactionFlowEnum, ActivitySchedule> getActivitySchedules() {
return activitySchedules;
}
public void setActivitySchedules(
Map<TransactionFlowEnum, ActivitySchedule> activitySchedules) {
this.activitySchedules = activitySchedules;
}
ActivitySchedule.java
private List<Stage> activities;
public List<Stage> getActivities() {
return activities;
}
public void setActivities(List<Stage> activities) {
this.activities = activities;
}
NormMaster.java
private String name;
public void setName(String name){
this.name = name;
}
public return getName(){
return name;
}
編集: Document.java にもう 1 つのフィールドを配置し、activitySchedules を除くメタデータをフェッチすると、適切なデータが取得されます。