我无法从数据库中检索所需的记录,我的课程如下,我需要知道哪些用户的购物篮不活跃。
Class Person {
}
Class User extends Person{
private Set<Basket> basketlist;
}
Class Prof extends User {
}
Class Basket{
private String active;
}
Criteria cre = session.createCriteria(User.class, "user")
.createAlias("user.basketlist", "basket");
ProjectionList pl = Projections.projectionList();
pl.add(Projections.property("user.id").as("id"));
cre.setProjection(pl);
cre.add(Restrictions.eq("basket.active", null));
IDs = cre.list();
上面的代码生成以下查询(我不确定为什么它在此查询中包含 Prof 以及为什么它不显示具有非活动篮子的用户)
select this_.id as y0_ from User this_ inner join Person this_1_ on
this_.id=this_1_.id left outer join Prof this_2_ on this_.id=this_2_.id inner join
User_basketlist basketl3_ on this_.id=basketl3_.User_id inner join basketlist
basketl1_ on basketl3_.basketlist_id=basketl1_.id where basketl1_.active=?
我的休眠版本
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.1.Final</version>
<type>jar</type>
</dependency>