HibernateのEntityにフィールドで宣言していないプロパティのgetter、setterを定義すると、
起動時にプロパティが見つからないと言われて、エラーが発生する。
private String skills;
// setterは省略
@Column(name="skills")
public String getSkills() {
return skills;
}
public int getRowCount() { // これに該当するプロパティが宣言されていないので、エラー。
return rowCount;
}
解決策1:@Transientを使用する。
使用したいアクセサに@Transientをつける。
private String skills;
// setterは省略
@Column(name="skills")
public String getSkills() {
return skills;
}
@Transient
public int getRowCount() { // これに該当するプロパティが宣言されていない。
return rowCount;
}
解決策2:getter、setterのメソッド名をやめる。
要するにis〜とか、get〜、set〜とかのメソッド名をやめれば一応動く。
private String skills;
// setterは省略
@Column(name="skills")
public String getSkills() {
return skills;
}
public int takeRowCount() { // get → takeに変える。(意味的には変わらない)
return rowCount;
}
まぁ、でも自分だったら@Transientを使うかな。
参考URL
http://stackoverflow.com/questions/6107387/is-it-possible-to-ignore-some-field-when-mapping-in-annotation-entity-class
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/