【发布时间】:2020-02-10 21:36:34
【问题描述】:
假设我有一个实体
@Entity
@Table(name = "foos")
class Foo{
@Id
@Generatedvalue(strategy = IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "bar_id")
private Bar bar;
...
}
还有一个投影应该给我一个id 和一个boolean 告诉我实例是否有一个Bar:
interface FooProjection{
String getId();
Boolean hasBar();
}
您如何编写 JPQL 查询?
我试过
@Query(
"SELECT"
" f.id,"
" (f.bar IS NOT NULL) AS bar"
" FROM Foo f"
)
List<FooProjection> findProjections();
这给了我一个org.eclipse.persistence.exceptions.JPQLException 并带有非常有用的错误消息
表达式无效,表示它不遵循 JPQL 语法。
你是如何编写这个查询的?
【问题讨论】:
-
不应该是这样的
@Query( "SELECT f.id, f.bar AS bar FROM Foo f where f.bar IS NOT NULL" ) -
@pvpkiran 不,我想要一个布尔值来告诉我
Foo是否有Bar
标签: java spring spring-data-jpa jpql projection