Exception lors d'une tentative d'insertion
Bonjour,
J'ai une application qui appelle un session bean :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
public static void main(String[] args) {
try {
Context context = new InitialContext();
GestionClient gestionClient = (GestionClient) context
.lookup("entreprise-ear/GestionClientBean/remote");
Utilisateur user = new Utilisateur();
user.setNom("TEST VILLE");
List<Adresse> adresses = new ArrayList<Adresse>();
Adresse adr = new Adresse();
adr.setVille("VILLE");
adresses.add(adr);
user.setAdresses(adresses);
gestionClient.addUtilisateur(user);
}
catch (Exception e) {
e.printStackTrace();
}
} |
... et la méthode du Session Bean :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public void addUtilisateur(Utilisateur user) throws Exception {
em.persist(user);
/*
List<Adresse> adresses = user.getAdresses();
for (Adresse adresse : adresses) {
adresse.setUtilisateur(user);
em.persist(adresse);
}
*/
} |
Et voici les 2 Entity Bean associés :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
@Entity
public class Utilisateur implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String nom;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "utilisateur")
private List<Adresse> adresses;
public Utilisateur() {
}
// accesseurs ... |
... et son cousin : :mrgreen:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
@Entity
public class Adresse implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String ville;
@ManyToOne
@JoinColumn(name = "utilisateur_fk", referencedColumnName = "id")
private Utilisateur utilisateur;
// accesseurs ... |
Un utilisateur peut donc avoir plusieurs adresses et il existe donc une relation (1,1 to 1,n) entre la table Utilisateur et la table Adresse.
Et bien la ligne :
... du Session Bean ajoute bien l'utilisateur.
Mais quand je décommente les lignes :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public void addUtilisateur(Utilisateur user) throws Exception {
em.persist(user);
List<Adresse> adresses = user.getAdresses();
for (Adresse adresse : adresses) {
adresse.setUtilisateur(user);
em.persist(adresse);
}
} |
... j'obtiens l'exception suivante :
Code:
1 2 3
|
2008-12-15 02:51:55,927 DEBUG [org.hibernate.util.JDBCExceptionReporter] (WorkerThread#0[127.0.0.1:54640]) could not insert: [entity.Adresse] [insert into Adresse (utilisateur_fk, ville) values (?, ?)]
java.sql.SQLException: Field 'id' doesn't have a default value |
Pourquoi cela ? :?
A+ ;)