JPA Hibernate et génération auto de PK
Bonjour,
j'ai actuellement une BD avec 2 tables (Proprietaire et Maison).
J'ai également les 2 javabeans correspondant.
Un propriétaire peut avoir plusieurs maisons, une maison ne peut appartenire qu'à une seul personne.
J'ai donc introduit les annotations ManyToOne et OneToMany pour représenter ce cas de figure.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
@Entity
public class Proprietaire {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@Column(name = "name")
private String name;
@OneToMany(mappedBy="proprio")
private Collection<Maison> maisonList;
...
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
@Entity
public class Maison {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@Column(name = "adresse")
private String adresse;
@ManyToOne
private Proprietaire proprio;
...
} |
Je cherche donc à avoir des clés primaires générées automatiquement lors de l'insertion en base et à maintenir une relation de clé étrangère entre les javabeans.
Mon insertion en base ressemble à cela: (ma classe DAO)
Code:
1 2 3 4 5 6 7 8 9 10 11
|
// creation et initialisation de l'EntityManagerFactory
public void add(T entity) {
...
// creation de l'EntityManager em
em.getTransaction().begin();
em.persist(entity);
em.getTransaction().commit();
// fermeture de l'em
...
} |
Ainsi, lorsque je rajoute plusieurs maisons (via un dao.add(m1); où m1 m2 etc. sont des objets instanciés, j'ai éffectivement des clés primaires autogénérées qui s'incrémente comme il faut.
Mais lorsque je tente de rajouter des Propriétaire, cette génération auto ne s'éffectue pas, et une exception de l'ordre suivant est levée:
Citation:
javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not insert
Je me retrouve ainsi avec seulement un objet Proprio en base comportant l'id 1.
Pourquoi cela fonctionne t-il parfaitement avec mes Maisons et pas avec mes Proprios ?
je n'avance plus.
Merci pour vos conseils