将布尔值设置为javax.persistenc.Query
问题描述:
我们不使用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);
答
可能发生的问题,因为在你的实体,你应该有state
属性作为boolean
,但在你的数据库应该是tinyint
或int
或类似的东西(因为我们不知道你的实体我假设),那么可能是你应该使用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您可以找到关于该注释的更多信息。
编辑:
+1
为什么提问者在使用Hibernate时引用了Toplink注释? –
+0
@AlanHay你是对的,我没有注意到这是一个Toplink注释...我只是编辑答案;) – Dazak
当我硬核查询其工作@NamedQuery(name = “Employee.getEmployeeByState”,查询= “select employee.id from employee employee where employee.state = 1”) – user2555212
定义“不工作”。恰恰。 –
它将返回与employee.state无关的所有条目TRUE/FALSE – user2555212