1

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

4

1 回答 1

0

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

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

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

简单的答案是否定的 - 正如您所提到的, aCriteriaQuery可以定义多个根,但这些根最终会成为笛卡尔积(CROSS JOINs ),这可能非常低效。

于 2016-11-08T14:22:19.247 回答