2017-10-20 83 views
0

我们不使用hibernate专有API。 我们遵循纯粹的JPA标准API。 如何设置一个布尔值作为参数传递给JPQL查询?(javax.persistenc.Query) 以下不工作将布尔值设置为javax.persistenc.Query

@NamedQuery(name = "Employee.getEmployeeByState", query = "select employee.id From Employee employee where employee.state=:inputState") 


    Query getEmployeesExcluded = entityManager.createNamedQuery("Employee.getEmployeeByState"); 
    getEmployeesExcluded .setParameter("inputState", Boolean.FALSE); 
+0

当我硬核查询其工作@NamedQuery(name = “Employee.getEmployeeByState”,查询= “select employee.id from employee employee where employee.state = 1”) – user2555212

+1

定义“不工作”。恰恰。 –

+0

它将返回与employee.state无关的所有条目TRUE/FALSE – user2555212

回答

-1

可能发生的问题,因为在你的实体,你应该有state属性作为boolean,但在你的数据库应该是tinyintint或类似的东西(因为我们不知道你的实体我假设),那么可能是你应该使用typeConverter

@Entity 
@NamedQuery(name = "Employee.getEmployeeByState", query = "select employee.id From Employee employee where employee.state=:inputState") 
public class Employee implements Serializable { 

    @TypeConverter(name="intToBoolean", dataType=Integer.class, objectType=Boolean.class) 
    private boolean state; 

    //getters and setters 
} 

here您可以找到关于该注释的更多信息。

编辑:

或者您也可以实现自己的转换器,检查thisthisthis

+1

为什么提问者在使用Hibernate时引用了Toplink注释? –

+0

@AlanHay你是对的,我没有注意到这是一个Toplink注释...我只是编辑答案;) – Dazak