为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

收到一只叮咚 2019-11-27 10:06:44
我想使用Hibernate的条件api来制定连接两个实体的特定查询。假设我有两个实体,Pet和Owner,拥有者有很多宠物,但是关键是关联没有映射到Java批注或xml中。使用hql,我可以通过在查询中指定联接来选择拥有“ fido”宠物的所有者(而不是将一组宠物添加到owner类)。可以使用休眠条件进行相同的操作吗?如果可以,怎么办?谢谢,J
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

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


查看完整回答
反对 回复 2019-11-27
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

使用条件确实可以做到这一点:


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));

更新:实际上,这将执行子查询而不是联接,但是它允许您在未定义休眠关系的两个实体上使用条件。


查看完整回答
反对 回复 2019-11-27
  • 3 回答
  • 0 关注
  • 399 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信