2013-03-19 1 views
0

최대 절전 모드 동작에 대해 더 잘 이해할 필요가 없으며 문제에 대한 의견을 나눌 수 있는지 궁금합니다. ContactAction에는 1 : 다수의 관계가있는 개체가 있는데, 하나는 Contact이고 다른 하나는 Action입니다. 데이터베이스에 Contact을 저장할 때 Action (Contact의 속성) 컬렉션을 어떻게 저장할 수 있습니까? 지금 내가하고있는 일은 Contact을 먼저 저장 한 다음 Action을 저장하는 것입니다. 다음은 내 코드입니다 : 모델 개체 :단일 작업으로 컬렉션 속성 저장 최대 절전 모드

public class Contact implements Serializable{ 
    private Integer contactID; 
    private String givenName; 
    private String familyName; 
    private Set<Action> actionSet = new HashSet<Action>(); 
} 
public class Action implements Serializable{ 
    private Integer actionID; 
    private String actionNote; 
    private Contact contact; 
} 

최대 절전 모드 매핑 :

<hibernate-mapping package="com.hibernate.model" schema="hibernatedb"> 
<class name="Contact" table="CONTACT"> 
    <id column="CONTACT_ID" length="500" name="contactID"> 
     <generator class="increment" /> 
    </id> 
    <property column="GIVEN_NAME" generated="never" lazy="false" length="100" name="givenName" /> 
    <property column="FAMILY_NAME" generated="never" lazy="false" length="100" name="familyName" /> 
    <!-- one to many mapping with Action --> 
    <set inverse="true" lazy="false" name="actionSet" sort="unsorted"> 
     <key column="CONTACT_ID" /> 
     <one-to-many class="com.hibernate.model.Action" /> 
    </set> 

</class> 
</hibernate-mapping> 

<hibernate-mapping package="com.hibernate.model" schema="hibernatedb"> 
<class name="Action" table="ACTION"> 
    <id column="ACTION_ID" length="500" name="actionID"> 
     <generator class="increment" /> 
    </id> 
    <property column="ACTION_NOTE" type="string" name="actionNote" /> 
    <!-- many to one mapping with Contact --> 
    <many-to-one name="contact" column="CONTACT_ID" 
     class="com.hibernate.model.Contact" lazy="false" cascade="save-update" /> 
</class> 
</hibernate-mapping> 

이 나는 ​​순간에 그것을 저장하려고하는 방법이다 :

public class ContactServiceImpl implements ContactService{ 
    @Override 
    public void addContacts(Contact contact) { 

     contactDAO.addContact(contact);//saving the contact; 
     if((contact.getActionSet()!=null)&&(contact.getActionSet().size()>0)){ 
      actionService.addAllActions(contact,contact.getActionSet());//saving actions, associated with the contact 
     } 

    } 
} 

참조, Action을 저장하는 두 가지 작업이 있습니다. 여기에는 Contact의 속성으로, Contact이 저장되면 Action의 모음도 저장해야합니다. 올바른 방법을 알려주세요. 감사합니다

답변

1

는 상대 엔티티에 저장 호출 할 때 설정하여 작업을 절약 할 수 최대 절전 모드,

<set cascade="all"....

이 방법을 설정하십시오.

자세한 내용은 this 답변을 참조하십시오.

또한 the documentation을 참조하십시오.

관련 문제