나는 이것과 매우 비슷한 문제가있다 : How do I join tables on non-primary key columns in secondary tables? 하지만 같은 솔루션을 적용 할 수 있을지 모르겠다.외래 키를 사용하여 두 테이블을 하나의 엔티티에 매핑하는 방법은 무엇입니까?
나는이 같은 두 개의 테이블이 있습니다
CREATE TABLE CUSTOMER
(
CUSTOMER_ID INTEGER NOT NULL,
DETAIL_ID INTEGER NOT NULL,
PRIMARY KEY(CUSTOMER_ID),
CONSTRAINT cust_fk FOREIGN KEY(DETAIL_ID) REFERENCES DETAILS(DETAIL_ID)
)
CREATE TABLE DETAILS
(
DETAIL_ID INTEGER NOT NULL,
OTHER INTEGER NOT NULL,
PRIMARY KEY(DETAIL_ID)
)
내가 Customer
라는 하나의 클래스에이 테이블을지도하고 싶습니다, 그래서 내가 가진 :
@Entity
@Table(name = "CUSTOMERS")
@SecondaryTable(name = "DETAILS", [email protected](name="DETAIL_ID"))
public class Customer {
@Id
@GeneratedValue
@Column(name = "CUSTOMER_ID")
private Integer id;
@Column(table = "DETAILS", name = "OTHER")
private Integer notes;
// ...
}
을하지만 이것은 단지 DETAIL_ID
을 경우 작동 1 차 테이블에 CUSTOMER_ID
과 일치합니다.
제 질문은 : 어떻게 보조 테이블의 기본 키에 가입하려면 기본 테이블의 외래 키 필드를 사용할 수 있습니까?
UPDATE 내가 설정하려고 :
@SecondaryTable(name = "DETAILS", [email protected](name="DETAIL_ID", referencedColumnName="DETAIL_ID"))
을하지만 응용 프로그램을 실행할 때 나는이 예외가 얻을 :
org.hibernate.MappingException: Unable to find column with logical name: DETAIL_ID in org.hibernate.mapping.Table(CUSTOMERS) and its related supertables and secondary tables
두 테이블이 있으므로 하나의 테이블에 결합하고 싶습니까? –
@SerenityStackHolder 네, 하나의 엔티티에 두 개의 테이블을 매핑하고 싶습니다. 하지만 보조 테이블에 기본 테이블에 외래 키가 있습니다. – davioooh