Java Hibernate,在单个操作中保存集合属性

Java Hibernate,在单个操作中保存集合属性,java,spring,hibernate,jakarta-ee,hibernate-mapping,Java,Spring,Hibernate,Jakarta Ee,Hibernate Mapping,我需要对hibernate的这种行为有一个更好的了解,并且想知道我是否能对这件事有所了解。 有两个对象,Contact和Action具有一对多关系,即一个Contact可以有多个Action与其关联。 我试图理解的是,当我将联系人存储到数据库时,如何存储操作的集合(这是联系人的属性)。 目前我正在做的是先存储联系人s,然后存储动作s。 以下是我的代码: 模型对象: public class Contact implements Serializable{ private Integer

我需要对hibernate的这种行为有一个更好的了解,并且想知道我是否能对这件事有所了解。 有两个对象,
Contact
Action
具有一对多关系,即一个
Contact
可以有多个
Action
与其关联。 我试图理解的是,当我将
联系人
存储到数据库时,如何存储
操作
的集合(这是
联系人
的属性)。 目前我正在做的是先存储
联系人
s,然后存储
动作
s。 以下是我的代码: 模型对象:

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;
}
请参阅,有两个操作导致保存
操作
s,因为它们是
联系人
的属性,我相信当
联系人
保存时,也必须保存
操作
的集合。 请告诉我正确的方法。谢谢

尝试设置


<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
        }

    }
}