当前位置:  开发笔记 > 编程语言 > 正文

Hibernate条件:没有映射关联的连接表

如何解决《Hibernate条件:没有映射关联的连接表》经验,为你挑选了2个好方法。

我想使用Hibernate的标准api来制定一个连接两个实体的特定查询.假设我有两个实体,Pet和Owner,拥有许多宠物,但关键是这种关联没有映射到Java注释或xml中.

使用hql,我可以通过在查询中指定连接来选择拥有名为'fido'的宠物的所有者(而不是将一组宠物添加到所有者类).

可以使用休眠标准完成相同的操作吗?如果是这样的话?

谢谢,J



1> Pierre Preto..:

这确实可以通过以下标准实现:

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

更新:这实际上执行子查询而不是连接,但它允许您在两个没有定义休眠关系的实体上使用Criteria.


问题是这不是连接,而是子查询 - 这意味着您无法按照第一个条件的列来排序结果.
为我完美工作,这是一个投票

2> David M..:

我的理解是,如果使用HQL执行此操作,则使用过滤器而不是内部联接创建笛卡尔联接.Criteria查询不支持这样做.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有