我希望形成一个查询,其中关联的集合受到限制,理想情况下使用Hibernate Criteria或HQL,但我对 感兴趣如何在SQL中执行此操作。例如,假设我有一个男孩 类与Kites类的双向一对多关联。 我想获得一个列表,其中的风筝的长度在一个范围内。限制关联实体的查询
问题是,我知道的HQL /标准只给我一个完整(无限制)的风筝套件,如这两个 示例(HQL是一个猜测)中给出的男孩对象 。也就是说,我得到了有风筝的男孩 在正确的范围内,但是对于每个这样的男孩我都会得到全部的风筝,而不是 就是那个范围内的那些。
select new Boy(name) from Boy b
inner join Kite on Boy.id=Kite.boyId
where b.name = "Huck" and length >= 1;
Criteria crit = session.createCriteria(Boy.class);
crit.add(Restrictions.eq("name", "Huck"))
.createCriteria("kites")
.add(Restrictions.ge("length", new BigDecimal(1.0)));
List list = crit.list();
现在我要得到正确的风筝长度设置的唯一途径是通过 男孩的列表,并为每一个重新查询风筝 在范围内的人进行迭代。我希望有一些SQL/HQL/Criteria向导 知道更好的方法。我更喜欢得到一个Criteria解决方案,因为我的 真正的“Boy”构造函数有很多参数,并且有便利的 来初始化Boys。
我的底层数据库是MySQL。不要以为我对SQL或Hibernate有很多了解。谢谢!
谢谢,这是非常好的,让我思考沿着正确的路线。 – Glenn 2009-07-07 22:37:09