Hibernate Criteria API

时间:2011-07-20 00:54:51

标签: hibernate api search criteria

我需要进行搜索,包括导航到子元素,然后返回到root / parent。如何使用Criteria API执行此类操作?

作为一个例子,我有:

Criteria crit = getSessionFactory().getCurrentSession()
    .createCriteria(TherapistImpl.class);

现在我需要转到User类以获取与用户关联的地址(一组地址):

crit.createCriteria("user")
    .createCriteria("addresses")
    .add(Restrictions.eq("postcode", postCode));

但是现在我已经完成了这项工作,我需要重新获取父类TherapyImpl中的其他一对多关联,例如

crit.createCriteria("therapyProvisions")
    .add(Restrictions.eq("type", searchByValueSelected));

但是hibernate认为这是指我们之前链接和创建的用户标准。

所以我创建多个标准?有没有办法导航树等?

感谢您的评论 保罗

1 个答案:

答案 0 :(得分:1)

不是为Criteria关联创建子user,而是为其创建别名:

crit.createAlias("user", "userAlias");
crit.add(Restrictions.eq("userAlias.addresses.postcode", postCode);

(您可能需要为addresses创建子别名。)

然后,为therapyProvisions执行相同操作:

crit.createAlias("therapyProvisions", "therapyProvisionsAlias");
crit.add(Restrictions.eq("therapyProvisionsAlias.type", searchByValueSelected);

现在你将拥有内部联接。