猿问

JPQL——空值到布尔值?

假设我有一个实体


@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 语法。


你如何编写这个查询?


梦里花落0921
浏览 74回答 1
1回答

三国纷争

我不知道您是否应该运行此查询,但语法的一种修复方法是使用表达式CASE:@Query(&nbsp; &nbsp; "SELECT"&nbsp; &nbsp; "&nbsp; &nbsp;f.id,"&nbsp; &nbsp; "&nbsp; &nbsp;CASE WHEN f.bar IS NOT NULL THEN TRUE ELSE FALSE END AS bar"&nbsp; &nbsp; " FROM Foo f")List<FooProjection> findProjections();
随时随地看视频慕课网APP

相关分类

Java
我要回答