我需要进行搜索,包括导航到子元素,然后返回到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认为这是指我们之前链接和创建的用户标准。
所以我创建多个标准?有没有办法导航树等?
感谢您的评论 保罗
答案 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);
现在你将拥有内部联接。