那么,以下用例:
我有两个表和相应的实体,我们称之为表A(左)和表B(右) . 两个表都有一个“大小”列,但在我的OR模型中,表a没有引用表b的对象 . 现在我想要实现的目标(通过Spring Data JPA @ Query-Annotation / JPQL,而不是使用本机SQL)类似于以下(稍微简化)的查询:
@Query("select a from TheLeftTable a join TheRightTable b" +
"where b.size = a.size ")
Page<TheLeftTable> findAllAvailableEntries(Pageable p);
但是当我尝试启动我的tomcat时,我得到以下异常:
...由以下原因引起:org.apache.openjpa.persistence.ArgumentException:遇到字符48处的“join TheRightTable b”,但预期:[“ . ”,“FETCH”,“INNER”,“JOIN”,“LEFT” ,]
所以我的问题是:这通常是否可以用JPQL / JPA创建这样的查询?请记住:在我的OR模型中,TableA没有来自表B的对象 . 我的简化的Entitiy-Properties看起来像这样:
@Column(name = "size")
String size;
如果不可能,任何其他想法都会很棒 . (除了将表A的实体更改为具有实体B的对象,这是不可能的)
1 回答
没问题,有可能这样做:
它被称为交叉连接,但如果列
size
被索引,您将不会注意到任何性能问题 .