Hibernate Criteria API - 如何获取对象属性的列表

时间:2012-10-30 08:41:13

标签: java hibernate criteria-api hibernate-criteria

我有两个班级

class House {
    String id
    Long size
    Resident resident
}

class Resident {
    String id
    String name
}

我想要的是一份居民名单,但我需要一些限制。 E.q.在大小e.q. > 20并将结果限制为10

居民没有提到众议院。

我真的不知道如何继续这个。

我试过了:

Criteria crit = session.createCriteria(House.class);
crit.add(Expression.ge("size", 20));
crit.setMaxResults(10);
crit.addOrder(Order.desc("size"));
return crit.list();

但我不知道如何获得与居民的连接

2 个答案:

答案 0 :(得分:3)

请尝试以下代码:

Criteria crit = session.createCriteria(House.class);
crit.add(Expression.ge("size", 20));
crit.setMaxResults(10);
crit.addOrder(Order.desc("size"));
crit.setFetchMode("resident", FetchMode.JOIN);
crit.setProjection(Projections.property("resident"));
return crit.list();

答案 1 :(得分:2)

“居民没有提到众议院” - 当没有关联时,AFAIK Hibernate Criteria不能对给定条目的另一个条目创建限制。

因此,您无法为Criteria创建Resident.class并在其中添加Restriction

您可以尝试为Criteria创建House.class,添加所需的Restriction,然后设置Projection以获取Resident.class实例。

到目前为止你尝试了什么?