Ваш вопрос звучит как коллекция класса @Embeddable, где жизненный цикл компонента (деталь - колесо) привязан к жизненному циклу его экземпляра сущности-владельца (Automobile)
@Entity
public class Automobile {
private Integer id;
private Set<Wheels> wheelsSet = new HashSet<Wheels>();
@Id
@GeneratedValue
public Integer getId() {
return this.id;
}
@CollectionsOfElements
@JoinTable("AUTO_WHEELS")
public Set<Wheels> getWheelSet() {
return this.wheelsSet;
}
}
Если вы делаете
Automobile auto = session
.createQuery("from Automobile a left join fetch a.wheelSet where a.id = :id")
.setParameter("id", id)
.list().get(0);
И
/**
* All of wheels removed
*/
auto.getWheelSet().clear();
/**
* New Wheels added
*/
auto.getWheelSet().add(new Wheel());
auto.getWheelSet().add(new Wheel());
auto.getWheelSet().add(new Wheel());
auto.getWheelSet().add(new Wheel());
session.update(auto);
Он удовлетворит ваши потребности. Но имейте в виду, вы должны предоставить equals и реализацию hashCode Для нормальной работы
@Embeddable
public class Wheel implements Serializable {
/**
* equals and hashCode goes here
* Prefer To use business key
*/
}