猿问

休眠条件:没有映射关联的联接表

我想使用Hibernate的条件api来制定连接两个实体的特定查询。假设我有两个实体,Pet和Owner,拥有者有很多宠物,但是关键是关联没有映射到Java批注或xml中。


使用hql,我可以通过在查询中指定联接来选择拥有“ fido”宠物的所有者(而不是将一组宠物添加到owner类)。


可以使用休眠条件进行相同的操作吗?如果可以,怎么办?


谢谢,J


收到一只叮咚
浏览 400回答 3
3回答

湖上湖

我的理解是,如果使用HQL进行此操作,则将创建具有过滤器而不是内部联接的笛卡尔联接。条件查询不支持这样做。

喵喵时光机

使用条件确实可以做到这一点:DetachedCriteria ownerCriteria = DetachedCriteria.forClass(Owner.class);ownerCriteria.setProjection(Property.forName("id"));ownerCriteria.add(Restrictions.eq("ownername", "bob"));Criteria criteria = getSession().createCriteria(Pet.class);criteria.add(Property.forName("ownerId").in(ownerCriteria));更新:实际上,这将执行子查询而不是联接,但是它允许您在未定义休眠关系的两个实体上使用条件。
随时随地看视频慕课网APP

相关分类

Java
我要回答