2009-08-26 2 views
1

이 매핑을 XML 대신 주석으로 구성하고 싶습니다.이 하이버 네이트 매핑을 주석으로 재 작성하려면 어떻게해야합니까?

여기 (일반 소비 살균) 맵핑 구성이다 :

<hibernate-mapping package="com.test.model"> 
    <class name="Parent" table="parent"> 

    <composite-id name="id" class="ParentCompositeKey"> 
     <key-property name="first_id" type="long" column="first_id"/> 
     <key-property name="second_id" type="long" column="second_id"/> 
    </composite-id>  

    <set name="parentChildren" table="parent_child" inverse="true" cascade="all"> 
     <key on-delete="cascade"> 
      <column name="first_id"/> 
      <column name="second_id"/> 
     </key> 
     <one-to-many class="Child" /> 
    </set> 

    </class> 
</hibernate-mapping> 

ParentLong들로 구성된 복합 기본 키를 갖는다. Child에는 부모의 복합 기본 키와 추가 Long으로 구성된 합성 기본 키가 있습니다. Parent을 제거하면 관련 Child 레코드도 제거됩니다. (이 아이들은 분명히 스스로를 지키려고하지 않습니다.)

이것은 단방향 관계입니다. Child 쪽에서는 Parent을 찾을 필요가 없습니다.

저는 JPA 주석에서 약간 초보자입니다. 나는 문서에서 보았고 @OneToMany@JoinTable@JoinColumns의 다양한 조합을 시도하여 지금까지의 문제를 해결했습니다.

question은 희망으로 나를 채우지는 않지만 XML로 작동하는 경우 주석으로 처리 할 수 ​​있어야합니다.

감사의 말.

답변

2

다음은 Hibernate Annotations documentation에 대한 링크로 원하는 대부분을 포함합니다. 그 결과 매핑의 라인을 따라 뭔가 될 것이다 : 이것은 더 (당신이 할 수 있는지 당신의 이름 지정 방식에서 분명 조금의) 테이블에 가입 한지지 않습니다

@Embeddable 
public class ParentCompositeKey implements Serializable { 

    public long getFirstId() { ... } 

    public long getSecondId() { ... } 

    // setters 
} 

@Entity 
public class Parent implements Serializable { 

    @Id 
    public ParentCompositeKey getId() { ... } 

    @OneToMany(cascade=CascadeType.ALL) 
    @JoinColumns ({ 
     @JoinColumn(name="first_id"), 
     @JoinColumn(name="second_id") 
    }) 
    public List getParentChildren() { ... } 

    // setters 
} 

. 그렇다면 @JoinTable 특수 효과를 추가하고 @JoinColumns으로 이동해야합니다.

+0

감사합니다. 이것은 정말로 도움이되었습니다. – Kevin

관련 문제