Oui, vous devez utiliser le mappage suivant
@Entity public class Parent {
@Id
private Integer id;
@CollectionOfElements
@JoinTable(
name="Child",
[email protected](name="PARENT_ID"))
@IndexColumn("childIndex")
private List<Child> childList = new ArrayList<Child>();
}
Remarque @CollectionOfElements et IndexColumn est Hibernate annotations spécifiques, non JPA 1.0 spécification. JPA 2.0 les présentera.
@Embeddable public class enfant {
// @Embeddable class does not contains identifiers
// child class specific property's
}
Ainsi, le code suivant fonctionne très bien
Parent parent = new Parent(); Parent.getChildList(). Add (new Child())
parent.getChildList(). Parent.getChildList(). Add (new Enfant()); parent.getChildList(). // autre enfant
session.save (parent); // Un parent et deux enfants seront enregistrés
L'inconvénient de ce problème est que l'annotation @CollectionOfElements ne s'applique qu'à la classe @Embeddadble, et non à une classe Entity. Si vous voulez une classe enfant en tant que classe Entity, j'aimerais voir la solution. Il n'est pas possible d'appliquer en même temps les annotations @Entity et @Embeddable à une classe.
Cordialement Arthur Ronald F D Garcia (programmeur Java) Natal/RN - Brésil
Merci! Avez-vous un exemple sans annotations? Nous sommes coincés sur 1.4, malheureusement. –
Cette page http://docs.jboss.org/hibernate/stable/core/reference/en/html/mapping.html explique comment faire le mapping avec xml. –