Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带布尔字段的Spring JPA抛出;无法解决属性异常";_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java 带布尔字段的Spring JPA抛出;无法解决属性异常";

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

我面临“无法解析属性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 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不可用

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

  • 您可以将自己的getter和setter作为getManager()和setManager()生成
  • 可以使用布尔对象而不是基本体

  • 注意:getIsManager对于访问基本布尔类型没有意义。因此Eclipse为所有原语生成getter,从isXXX开始作为getter。

    请使用BOOLEAN类而不是原语,因为hibernate将尝试将对象保存到数据库BOOLEAN is primitive您的代码完全符合JPA规范(关于java bean命名),因此,如果Hibernate需要使用Boolean,则在JPA提供程序上提出一个问题。请尝试将getter重命名为
    getManager()
    ,或者可以将属性重命名为
    isManager
    -->将getter重命名为
    getIsManager