如何使用布尔条件编写 JPA 查询

2022-09-01 12:02:11

在我的项目中,我将JPA 2.0与eclipselink inplementation一起使用,我有以下问题:

我用布尔列定义了实体:

@Entity
public User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="USR_ID")
    private Short id;

    @Column(name="USR_NAME")
    private String name;

    @Column(name="USR_ACTIVE")
    private boolean active;

    .......

}

我想创建将返回所有活动用户的查询,如下所示:

从用户 u 中选择 u,其中 u.active = TRUE;

但是,如果我使用该查询,我得到异常,即布尔值不能转换为 Short(数据库中的列存储为 smallint)。有没有正确的方法来编写这个查询?

谢谢


答案 1

使用以下形式:

SELECT e FROM Employee e WHERE e.active = TRUE

有关详细信息,请参阅文档


答案 2

对于MySql的工作原理是这样的:

public interface UserRepository extends JpaRepository<User, Long> {    
    @Query("SELECT e FROM  Employee e WHERE e.active=?1")
    User findByStatus(Boolean active);
}

推荐