나는 Hibernate Documentation을 따르고 섹션 9.4. Components as composite identifiers
에 주어진 예제를 구현하려고하지만 구현 방법에 관한 문제에 직면하고있다.최대 절전 모드의 복합 식별자로서의 컴퍼넌트
내 엔티티 클래스 :
Order.java
public class Order {
private int id;
private Set<OrderLine> lines = new HashSet<OrderLine>();
// Setters & Getters
}
OrderLine.java
public class OrderLine {
private OrderLineId id;
private String name;
private Order order;
// Setters & Getters
}
OrderLineId.java
public class OrderLineId implements Serializable{
private int lineId;
private int orderId;
private int customerId;
// Setters & Getters
}
내 매핑 파일 데 문제 :
내가 말하는 예외 얻고,이 매핑 파일을 구문 분석 세션 공장을 만들려고하고<hibernate-mapping>
<class name="Order" table="TEST_Order">
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<set name="lines" cascade="all">
<key column="orderId"/>
<one-to-many class="OrderLine"/>
</set>
</class>
<class name="OrderLine" table="TEST_OrderLine">
<composite-id name="id" class="OrderLineId">
<key-property name="lineId"/>
<key-property name="orderId"/>
<key-property name="customerId"/>
</composite-id>
<property name="name"/>
<many-to-one name="order" class="Order"
insert="false" update="false">
<column name="orderId"/>
<column name="customerId"/>
</many-to-one>
</class>
</hibernate-mapping>
:
Caused by: org.hibernate.MappingException: Foreign key (FK_89b4nqt5l2n6tfd1d5tq0ill0:TEST_OrderLine [orderId,customerId])) must have same number of columns as the referenced primary key (TEST_Order [id])
at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:110)
at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:93)
at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1816)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1739)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1424)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844)
수를 누군가가 설명서에 나와있는 예제를 구현하는 방법을 알려주십시오.
안녕하세요 블라드, 고마워요 응답에 대한. 귀하의 제안에 따라 hbm 파일을 변경했지만 여전히 동일한 예외가 발생합니다. – Chaitanya
업데이트 된 답변을 확인하십시오.그 복합 키에 대해 혼란 스러웠지만 one-Order-Many-OrderLine 연관에는 간단한 키 (Order.id) 만 있으면됩니다. –
답변에 이어 내 문제가 해결되었습니다. 귀하의 설명을 기반으로 지금 내 질문에 언급 된 동일한 매핑 파일을 가지고 시도하고 내 '주문'엔티티에 대한 합성 ID를 만들었고 문제가없는 지금도 문제를 해결했습니다. 블라드에게 고마워. – Chaitanya