java Hibernate标准:在没有映射关联的情况下连接表
我想使用Hibernate的CriteriaAPI来制定连接两个实体的特定查询。假设我有两个实体,Pet和Owner,其中一个所有者有许多Pet,但至关重要的是,这种关联没有映射到Java注释或xml中
使用hql,我可以通过在查询中指定联接(而不是将一组宠物添加到所有者类)来选择拥有名为“fido”宠物的所有者
使用hibernate标准是否也可以做到这一点?如果是,怎么做
谢谢, J
你可以在下面搜索框中键入要查询的问题!
我想使用Hibernate的CriteriaAPI来制定连接两个实体的特定查询。假设我有两个实体,Pet和Owner,其中一个所有者有许多Pet,但至关重要的是,这种关联没有映射到Java注释或xml中
使用hql,我可以通过在查询中指定联接(而不是将一组宠物添加到所有者类)来选择拥有名为“fido”宠物的所有者
使用hibernate标准是否也可以做到这一点?如果是,怎么做
谢谢, J
# 1 楼答案
我的理解是,如果您使用HQL进行此操作,您将使用过滤器创建笛卡尔连接,而不是内部连接。条件查询不支持这样做
# 2 楼答案
有一个
SQLCriterion
,你可以给它任意的SQL
,然后添加到你的Criteria
。在SQL
字符串中,标记{alias}“将被根实体的别名替换。”# 3 楼答案
在NHibernate中,可以使用定义为DetachedCriteria的子查询。不确定它在Java中是否工作相同,很可能是相同的:
假设它是使用所有者的名称连接的
# 4 楼答案
根据以下标准,这确实是可能的:
更新:这实际上是执行子查询而不是联接,但它允许您在未定义休眠关系的两个实体上使用条件
# 5 楼答案