J'ai les entités suivantes. Contact. La personne. Organisation. et Telefoon (Téléphone en anglais).entitymanager ne persistera pas tous les téléphones pour le contact
Une personne et une organisation sont toutes deux des contacts. ils héritent de Contact.
Un contact peut avoir un ou plusieurs numéros de téléphone. Donc, une liste de Telefoon.
Une organisation a également un contactPerson de la personne type. Le problème est que si je persiste Objets Person et Objets d'organisation, qui ont tous deux numéros pour chaque objet, que pour certains objets seulement 1 numéro de téléphone persiste dans la base de données? Comment c'est ?
Je sais que cela a à voir avec mes annotations et ma configuration de mes cours.
le contact de classe
@Entity
@Table(name= "Contact")
@Inheritance(strategy = InheritanceType.JOINED)
@XmlRootElement
public class Contact implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String naam;
@Embedded
private Adres adres;
public Contact() {}
@OneToMany(mappedBy="contact", orphanRemoval=true,cascade = CascadeType.ALL)
@XmlElement
private List<Telefoon> telefoons=new ArrayList<>();
La classe Personne
@Entity
@Table(name="Persoon")
@Inheritance(strategy= InheritanceType.JOINED)
public class Persoon extends Contact implements Serializable{
@Convert(converter=LocalDatePersistenceConverter.class)
private LocalDate geboorteDatum;
protected Persoon() {}
@OneToMany(mappedBy="contactPersoon",orphanRemoval=true,cascade = CascadeType.ALL)
private List<Organisatie> Organisaties;
L'Organisation de la classe:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Organisatie extends Contact implements Serializable{
protected Organisatie() {}
@JoinColumn(name = "persoonid")
@ManyToOne(cascade=CascadeType.ALL)
private Persoon contactPersoon;
classe Telefoon (Téléphone en anglais)
@Entity
@Table(name = "Telefoon")
public class Telefoon implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "nummer")
private String nummer;
@Column(name = "naam")
private String naam;
@JoinColumn(name = "contactid")
@ManyToOne
private Contact contact;
Je persiste mes objets de cette façon:
persoon1.addTelefoon(new Telefoon("Huis","092243851"));
persoon1.addTelefoon(new Telefoon("Mobiel","0478451226"));
persoon2.addTelefoon(new Telefoon("Huis","095547812"));
persoon2.addTelefoon(new Telefoon("Mobiel","0425154578"));
persoon3.addTelefoon(new Telefoon("Huis","097784152"));
persoon3.addTelefoon(new Telefoon("Mobiel","0478221144"));
persoon4.addTelefoon(new Telefoon("Huis","095862314"));
persoon4.addTelefoon(new Telefoon("Mobiel","0423887799"));
persoon5.addTelefoon(new Telefoon("Huis","097841526"));
persoon5.addTelefoon(new Telefoon("Mobiel","0478220033"));
contactpersoon1.addTelefoon(new Telefoon("Huis","092261236"));
contactpersoon1.addTelefoon(new Telefoon("Mobiel","0499150327"));
contactpersoon2.addTelefoon(new Telefoon("Huis","097842615"));
contactpersoon2.addTelefoon(new Telefoon("Mobiel","0499369101"));
contactpersoon3.addTelefoon(new Telefoon("Huis","091142563"));
contactpersoon3.addTelefoon(new Telefoon("Mobiel","0452119987"));
organisatie1.addTelefoon(new Telefoon("Huis","094578956"));
organisatie1.addTelefoon(new Telefoon("Mobiel","0488125200"));
organisatie2.addTelefoon(new Telefoon("Huis","091247653"));
organisatie2.addTelefoon(new Telefoon("Mobiel","0487930287"));
organisatie3.addTelefoon(new Telefoon("Huis","09784561346"));
organisatie3.addTelefoon(new Telefoon("Mobiel","0476112233"));
em.getTransaction().begin();
em.persist(persoon1);
em.persist(persoon2);
em.persist(persoon3);
em.persist(persoon4);
em.persist(persoon5);
em.persist(organisatie1);
em.persist(organisatie2);
em.persist(organisatie3);
em.merge(contactpersoon1);
em.merge(contactpersoon2);
em.merge(contactpersoon3);
em.getTransaction().commit();
, mais la base de données ne sera pas montrer tous et numéros mobiles! Certains sont oubliés!
Des pensées?
Thanx
Qui persiste avec succès et qui ne le fait pas? –