You can achieve this behavior using the Cascade property of OneToOne-Annotation. therefore with Hibernate / JPA annotations. You have something like:
@Entity public class AClass{ @Id @GeneratedValue private long id; @OneToOne(cascade={Cascade.ALL, Cascade.DELETE_ORPHANS}) private BClass b_1; @OneToOne(cascade={Cascade.ALL, Cascade.DELETE_ORPHANS}) private BClass b_2; } @Entity public class BClass{ private String someField; }
in an XML mapping, the association should look something like this:
<hibernate-mapping> <class name="AClass"> <one-to-one cascade="all,delete-orphans" name="b_1" class="BClass" /> <one-to-one cascade="all,delete-orphans" name="b_2" class="BClass" /> </class> </hibernate-mapping>
This should give you the desired behavior in cascading save operations on BClasses and remove any undescribed BClass objects from the save level.
Good luck
Franc
source share