如何创建带有子句ON的Spring数据jpa存储库

时间:2019-10-18 10:24:58

标签: java mysql sql spring repository

假设我们有两个类A和B: A类:

public class A {private Long id;}

B级:

public class B {private Long id; private String name ; private Boolean isDeleted = false; }

除了条件ON之外,是否还有一种方法可以使Join查询的结果具有其他条件 我尝试了此操作,但没有用,编译器无法识别ON org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token子句:

 @Query( "SELECT new com.demo.DTO.resultsDTO(a.id) FROM A ate , B a  ON a.id = b.id WHERE b.isDeleted = false AND b.name = ?1  ")

我也尝试在子句WHERE中包含a.id = b.id,但它不返回结果。 请帮忙。

1 个答案:

答案 0 :(得分:0)

您的查询已关闭,并且正在将老式的隐式连接语法与现代(首选)连接语法混合在一起。这是您应该使用的版本:

SELECT new com.demo.DTO.resultsDTO(a.id)
FROM A a
INNER JOIN B b
    ON a.id = b.id
WHERE
    b.isDeleted = false AND
    b.name = ?1;

您更新的Java代码:

@Query("SELECT new com.demo.DTO.resultsDTO(a.id) FROM A a INNER JOIN B b ON a.id = b.id WHERE b.isDeleted = false AND b.name = ?1")