저는 Hito와 Portada의 두 클래스로 작동하는 Hibernate @OneToOne 어노테이션을 얻으려고합니다. Portada 테이블에는 Hito라는 int 특성 인 Hito의 foreing 키가 있습니다.Hibernate @OneToOne이 작동하지 않습니다.
Hito :
@Entity
@Table(name = "hito")
public class Hito implements Serializable {
//...other attributes
private Portada portada;
//...getters and setters from other attributes
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "hito")
public Portada getPortada(){ return portada;}
public void setPortada(Portada portada){ this.portada = portada;}
}
Portada : 내 실체는 다음과 같다 내가 hito.getPortada()를 호출 할 때
@Entity
@Table(name = "portada")
public class Portada {
//...other attributes
private Hito hito;
//...getters and setters from other attributes
@OneToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "hito")
public Hito getHito() {return hito;}
public void setHito(Hito hito) {this.hito = hito;}
}
, 나는이 Portada 객체를 기대하지만, null를 돌려줍니다.
제안 사항? 고급
테이블에 양방향 설정이 없으므로 Portada 클래스에서 hito 인스턴스를 제거하십시오. Hito 클래스의 getPortada() 메소드에서 매핑 된 속성을 제거하십시오. – mprabhat
@mprabhat 그럴 수 없습니다. 내가 매핑 된 속성을 제거하면 최대 절전 모드에서 오류가 발생합니다. Portada 클래스의 hito 인스턴스를 제거하면 무엇을 의미합니까? –
@mprabhat 오류 : org.hibernate.engine.jdbc.spi.SqlExceptionHelper - '필드 목록'의 알 수없는 열 'hito0_.portada_id'. 히토 속성을 삭제 하시겠습니까? –