2016-12-26 7 views
0

"Hibernateクエリ例外のプロパティisManagerを解決できませんでした。ブール型フィールドを持つSpring JPAは "プロパティ例外を解決できません"をスローします。

私は、次の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; 
} 

これらは日食がセッターとゲッターを生成します。交換したとき、

public boolean isManager() { 
    return employeeId; 
} with 

public boolean getManager() { 
    return employeeId; 
} 

エラーはなくなりました。スタックオーバーフローの例がたくさんありました。しかしどこでも、それは与えられている、我々は "is"で始まる分野に名前をつけるべきではない。

誰でも説明していただけますか?

ありがとうございました。

+0

hibernateがデータベースにオブジェクトを保存しようとするため、BOOLEANクラスを使用しないでください。ブール値はプリミティブです –

+0

JPA仕様(Java Beanの命名を尊重)に従ってコードが完璧に細かいので、HibernateがJPAプロバイダに問題を提起します。 –

+0

getterの名前を 'getManager()'に変更しようとします。 属性の名前を 'isManager'に変更すると、' getIsManager'のゲッターに変更できます。 –

答えて

0

コメントありがとうございます。

解決策が見つかりました。 STSで生成されたセッターとゲッターを使用してフィールドをisManagerとして指定すると、ブール値のデフォルト値が偽がDBに保存されます。

フィールドは補助動詞で始めるべきではありません。私の例によると:

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

public boolean isManager() { 
    return employeeId; 
} 

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

上記のセッターとゲッターは正しく動作します。私はDBインターフェイスメソッドの@param値を更新していません。

ありがとうございました。

0

Hibernateは、すべての変数にgetXxxとsetXxxを使用します。 getterはisManager変数getter getManager()は休止状態では使用できません。

ですのでエラーになります。問題を解決するには

  1. あなたが
  2. あなたはプリミティブの代わりにBooleanオブジェクトを使用することができます()& setManager()getManagerとして独自のゲッターとセッターを生成することができます。

注:getIsManagerは、プリミティブブール型にアクセスする意味がありません。だから、EclipseはisXXXをゲッターとしてすべての基本的なスタートのゲッターを生成します。

関連する問題