我正在使用休眠 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 的问题吗?如果有人知道这件事,请告诉我。
豆结构:
文档.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;
}
规范大师.java
private String name;
public void setName(String name){
this.name = name;
}
public return getName(){
return name;
}
编辑:如果我在 Document.java 中再添加一个字段并获取不包括 activitySchedules 的元数据,那么正确的数据就会到来。