데이터베이스 테이블에 내용이 Y 또는 N (CHECK 제약 조건) 일 수있는 CHAR(1)
열이 있습니다. 자바에서 String 속성을 정의하고 클래스에서 String 기반 setter를 정의했습니다. 또한 편리 성을 위해 boolean 인수를 가진 @Transient
setter/getter를 추가했습니다.Hibernate는 setter/getters를 속성에 어떻게 매핑합니까?
내 기대는 Hibernate가 데이터베이스 액세스를 위해 String 기반 setter/getter를 사용한다는 것이었다. 그러나 런타임시 IllegalArgumentExceptions 및 부울 및 문자열 간의 형식 불일치가 발생합니다.
따라서, Hibernate가 mappping을 수행하는 속성에 기반하여? 메소드 이름? 인자 이름? 인수 유형? setter에서 final
을 사용하는 것이 좋습니까? 아니면 소문이 날 수 있습니까? 내 재산이 저의 테이블 열과 다른 이름을 가진다면 어떤 차이가 있습니까? 그들을 위해 다른 이름을 사용하려고 -
private String foobar = "N";
public void setFoobar(final String foobar) {
this.foobar = foobar;
}
@Column(name = "FOOBAR")
public String getFoobar() {
return this.foobar;
}
@Transient
public void setFoobar(final boolean foobar) {
this.setFoobar(foobar ? "Y" : "N");
}
@Transient
public boolean isFoobar() {
return (this.getFoobar().equals("Y") ? true : false);
}
@Column (name = "FOOBAR", columnDefinition = "CHAR")으로 시도해야합니다 public Character getFoobar() – MGorgon