この休止状態の動作をよりよく理解する必要があり、問題を明らかにできるかどうか疑問に思っています。2 つのオブジェクトがContact
ありAction
、1 対多の関係があります。つまり、1つのオブジェクトに複数の を関連付けるContact
ことができます。Action
私が理解しようとしているのは、データベースに保存するときにAction
s (のプロパティ) のコレクションを保存する方法です。現時点で私がやっていることは、最初に sを保存してから s を保存することです。以下は私のコードです: モデルオブジェクト:Contact
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
}
}
}
s の保存につながる操作が 2 つありますAction
。これらは のプロパティであるContact
ため、 を保存するときContact
は、 のコレクションAction
も保存する必要があると思います。正しいやり方を教えてください。ありがとう