JPA条件查询+ rowid上的自联接

时间:2013-09-16 05:24:05

标签: jpa rowid criteriaquery

我正在尝试编写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注释。

1 个答案:

答案 0 :(得分:0)

CriteriaQuery联接只能在实体之间明确定义的关系上定义。例如。在您的ClassA加入自身的示例中,需要一个明确的字段,例如:

@ManyToOne
@JoinColumn(name = "linked_class_a")
private ClassA linkedClassA
  

是否有可能加入标准查询(而不是根目录)?

简单的答案是否定的 - 正如您所提到的,CriteriaQuery可能会定义multiple roots,但这些最终会成为笛卡尔积(CROSS JOIN s),效率很低。