java - hibernate 标准 : Joining table without a mapped association

标签 java hibernate hql criteria

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

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

可以使用 hibernate 条件来完成相同的操作吗?如果有怎么办?

谢谢, J

最佳答案

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

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

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

关于java - hibernate 标准 : Joining table without a mapped association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/720502/

相关文章:

java - 如何在应用程序级别缓存复杂的java对象

nhibernate - 在 NHibernate 中使用 Postgres 聚合函数

grails - Grails executeQuery给我 “no such property”异常

java - 应用程序内空指针异常

java - 更改 linkedList 中的元素位置

java - 为什么 Java 中的字节表示以十进制存储数据?

java - POSTGRES (EclipseLink) 中的 JSON 数据存储

mysql - Spring jpa hibernate mysql LocalDate 在坚持一天后关闭

java - hibernate JPA : 'IS EMPTY' condition doesn't work for collections passed as parameters

java - 获取 "error": "<expression>,<operator>, GROUP, HAVING or ORDER expected got ' ('"