我正在尝试编写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
我在使用内部条件查询(带谓词)加入主要条件查询时遇到问题? 。是否有可能加入标准查询(而不是根)?
非常感谢任何帮助。 注意:域类已经使用embeddedId进行了复合PK注释。
答案 0 :(得分:0)
CriteriaQuery
联接只能在实体之间明确定义的关系上定义。例如。在您的ClassA
加入自身的示例中,需要一个明确的字段,例如:
@ManyToOne
@JoinColumn(name = "linked_class_a")
private ClassA linkedClassA
是否有可能加入标准查询(而不是根目录)?
简单的答案是否定的 - 正如您所提到的,CriteriaQuery
可能会定义multiple roots,但这些最终会成为笛卡尔积(CROSS JOIN
s),效率很低。