繁体   English   中英

带有布尔字段的Spring JPA抛出“无法解析属性异常”

[英]Spring JPA with boolean fields throws “cannot resolve property exception”

我面临着“无法解析属性isManager的”休眠查询异常。

我有以下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 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;
}

这些是蚀生成的setter和getter。 当我更换时

public boolean isManager() {
   return employeeId;
} with

public boolean getManager() {
   return employeeId;
}

错误消失了。 我已经看过很多堆栈溢出示例。 但是给定的地方,我们不应该命名以“ is”开头的字段。

有人可以解释吗?

谢谢。

感谢您的评论。

我找到了解决方案。 当我们使用STS生成的setter和getter将字段命名为isManager时,默认值Boolean, false将保存在DB中。

字段不应以助动词开头。 根据我的例子:

 @Column(name = "is_manager")
 private boolean manager;

 public boolean isManager() {
    return employeeId;
 }

 public void setManager(boolean manager) {
    this.manager = manager;
 }

上面的setter和getter可以正常工作。 我尚未在数据库接口方法中更新@param值。

谢谢。

Hibernate将getXxx和setXxx用于所有变量。 因此,getManager isManager变量getter getManager()不可用于休眠。

所以它得到错误。 解决问题。

  1. 您可以将自己的getter和setter生成为getManager()和setManager()
  2. 您可以使用布尔对象而不是基元。

注意:getIsManager对于访问原始布尔类型没有意义。 因此,Eclipse为所有以isXXX开头的原始数据生成吸气剂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM