2010-04-12 3 views
1

Action 엔티티가 있는데, 다른 Action 개체를 양방향 일대 다 관계로 가질 수 있습니다. "수집 매핑 반복 열 : DbAction.childs 열 :의 actionId"최대 절전 모드의 자체 참조 엔터티

: 문제는 Hibernate가 다음과 같은 예외를 출력입니다 :

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
<class name="DbAction" table="actions"> 

    <id name="actionId" type="short" /> 
    <property not-null="true" name="value" type="string" /> 

    <set name="childs" table="action_action" cascade="all-delete-orphan"> 
    <key column="actionId" /> 
    <many-to-many column="actionId" unique="true" class="DbAction" /> 
    </set> 

    <join table="action_action" inverse="true" optional="false"> 
    <key column="actionId" /> 
    <many-to-one name="parentAction" column="actionId" not-null="true" class="DbAction" /> 
    </join> 
</class> 
</hibernate-mapping> 

답변

1

때문이다 매핑의 코드를 아래

동일한 테이블에 대해 name="actionId"이 두 번 이상 선언되었습니다. 제안

+0

나도 같은 엔티티를 참조하고 있습니다 때문에, ID 필드가 변경되지 않도록. – Mark

+0

작전, 네 말이 맞아 미안해. 엔티티 사이의 관계를 만드는 동안 같은 열 이름을 지정하는 것이 필수적이라고 생각했지만 그렇지는 않았다. 그래서 "setAction"으로 "set"엘리먼트의 "key"엘리먼트의 "actionId"값을 대체하고 "many-to-one"엘리먼트의 "column"애트리뷰트에 "parentActionId"를 설정하여 문제를 해결했습니다. 요소. – Mark

1

armandino , 나는 "parentActionId"에 열 이름을 대체하려고하고 그것은 작동 :

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
<class name="DbAction" table="actions"> 

    <id name="actionId" type="short" /> 
    <property not-null="true" name="value" type="string" /> 

    <set name="childs" table="action_action" cascade="all-delete-orphan"> 
    <key column="parentActionId" /> 
    <many-to-many column="actionId" unique="true" class="DbAction" /> 
    </set> 

    <join table="action_action" inverse="true" optional="false"> 
    <key column="actionId" /> 
    <many-to-one name="parentAction" column="parentActionId" not-null="true" class="DbAction" /> 
    </join> 
</class> 
</hibernate-mapping> 
+0

다행 이군. 마르코. – armandino