Use*_*291 1 java spring projection jpql spring-data-jpa
假设我有一个实体
@Entity
@Table(name = "foos")
class Foo{
@Id
@Generatedvalue(strategy = IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "bar_id")
private Bar bar;
...
}
Run Code Online (Sandbox Code Playgroud)
和一个投影应该给我一个id和 一个boolean告诉我该实例是否有一个Bar:
interface FooProjection{
String getId();
Boolean hasBar();
}
Run Code Online (Sandbox Code Playgroud)
如何编写 JPQL 查询?
我确实尝试过
@Query(
"SELECT"
" f.id,"
" (f.bar IS NOT NULL) AS bar"
" FROM Foo f"
)
List<FooProjection> findProjections();
Run Code Online (Sandbox Code Playgroud)
这给了我一个org.eclipse.persistence.exceptions.JPQLException非常有用的错误消息
该表达式无效,这意味着它不遵循 JPQL 语法。
你如何编写这个查询?
我不知道您是否应该运行此查询,但语法的一种修复方法是使用表达式CASE:
@Query(
"SELECT"
" f.id,"
" CASE WHEN f.bar IS NOT NULL THEN TRUE ELSE FALSE END AS bar"
" FROM Foo f"
)
List<FooProjection> findProjections();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1603 次 |
| 最近记录: |