Java 带布尔字段的Spring JPA抛出;无法解决属性异常";
我面临“无法解析属性isManager的”Hibernate查询异常 我有以下java类:Java 带布尔字段的Spring JPA抛出;无法解决属性异常";,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我面临“无法解析属性isManager的”Hibernate查询异常 我有以下java类: public class Employee implements Serializable { @Column(name = "employee_id") private Integer employeeId; @Column(name = "name") private String name; @Column(name = "is_manager") private boolean manage
public class Employee implements Serializable {
@Column(name = "employee_id")
private Integer employeeId;
@Column(name = "name")
private String name;
@Column(name = "is_manager")
private boolean manager;
public Integer getEmployeeId() {
return employeeId;
}
public void setEmployeeId(Integer employeeId) {
this.employeeId = employeeId;
}
public String getName(){
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isManager(){
return employeeId;
}
public void setManager(boolean manager) {
this.manager = manager;
}
这些是eclipse生成的setter和getter。当我替换的时候
public boolean isManager() {
return employeeId;
} with
public boolean getManager() {
return employeeId;
}
错误消失了。我已经浏览了很多堆栈溢出示例。但在任何地方,我们都不应该给以“is”开头的字段命名
谁能解释一下吗
谢谢。谢谢你的评论 我找到了解决办法。当我们使用STS生成的setter和getter将字段命名为isManager时,默认值Booleanfalse保存在DB中 字段不应以助动词开头。根据我的例子:
@Column(name = "is_manager")
private boolean manager;
public boolean isManager() {
return employeeId;
}
public void setManager(boolean manager) {
this.manager = manager;
}
上面的setter和getter工作正常。我没有更新DB接口方法中的@param
值
谢谢。休眠使用getXxx和setXxx作为所有变量。因此,getter变量getter getManager()对于hibernate不可用 所以它得到了错误。解决这个问题
注意:getIsManager对于访问基本布尔类型没有意义。因此Eclipse为所有原语生成getter,从isXXX开始作为getter。请使用BOOLEAN类而不是原语,因为hibernate将尝试将对象保存到数据库BOOLEAN is primitive您的代码完全符合JPA规范(关于java bean命名),因此,如果Hibernate需要使用Boolean,则在JPA提供程序上提出一个问题。请尝试将getter重命名为
getManager()
,或者可以将属性重命名为isManager
-->将getter重命名为getIsManager