2
OneToOne 단방향 관계를 선언하는 방법을 알 수 없습니다. TripDeparture 모델에는 여행 모델의 외래 키가 있습니다 (이것이 DB 설정 방법입니다). departureLocation이 null로 설정된 출장을 추가하려고 할 때 아래 오류가 표시됩니다. 내가 'departureLocation'선언을 꺼내면 모든 것이 잘 작동합니다.JPA2.0에서 @OneToOne 단방향 매핑 - SQL 오류가 계속 발생 함
11891 [btpool0-2] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1054, SQLState: 42S22
11891 [btpool0-2] ERROR org.hibernate.util.JDBCExceptionReporter - Unknown column 'tripId' in 'field list'
나는 아이디어가 부족합니다 ... 아무도 도와 줄 수 있습니까 ??
감사합니다.
학부모 :
@Entity
@Table(name = "TRIP")
public class Trip implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
@JoinColumn(name = "tripId")
private TripDeparture departureLocation;
아이 :
여기@Entity
@Table(name = "DEPARTURE_LOCATION")
public class TripDeparture implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private int tripId;
귀하의 설정이 조금 이상하다. 자바 관점에서 보면, 부모는 자식을 알고 있지만 다른 방향은 아니다 ('tripId' 필드 제외). 그러나 데이터베이스 수준에서, 아동 (출발)은 협회를 관리하는 것으로 보인다. 그게 의도 된거야? – Thomas
예, 의도입니다 (마샬링/언 마샬링의 이유로, 다른 대화입니다). – Vladimir
또한 이것은 새로운 여행을 지속하는 방식으로 나를 제한합니다 (departureLocation을 null로 저장 한 다음 저장된 여행에서 tripID로 TripDeparture를 유지해야 함). 그러나 그렇게하는 것이 좋습니다. 여기에는 양방향 관계가 있습니다. – Vladimir