我正在尝试编写JPA标准查询。
Select * from classA t1
inner join
(SELECT rowid
FROM classA
where conditions...
ORDER BY clause
)t2
on t1.rowid = t2.rowid
ORDER BY clause
where rownum <= 500
我在将主条件查询与内部条件查询(带谓词)联接时遇到问题?.是否有可能在条件查询(而不是根)上做联接?
任何帮助都非常感谢。注意:域类已经具有复合PK-用嵌入ID标记。
CriteriaQuery
连接只能在实体之间显式定义的关系上定义。 例如,在您的示例中,要ClassA
连接到自身,需要一个显式字段,如下所示:
@ManyToOne
@JoinColumn(name = "linked_class_a")
private ClassA linkedClassA
是否有可能在条件查询(而不是根)上做联接?
简单的答案是否定的 - 正如你提到的,一个CriteriaQuery
可以定义多个根,但这些根最终成为笛卡尔乘积(CROSS JOIN
s),这可能非常低效。