Bonjour à tous
je débute sur les EJB 3 et JPA et je commence par un exemple basique qui me pose problème.
Voici ma configuration :
serveur d'application Jboss 5
JDK 1.6
SGBD : mysql
ORM : hibernate
J'essaie de faire un insert dans une table commercial dont voici la DDL :
Voici le code de l'entity
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE `commercial` ( `COMM_ID` int(11) NOT NULL, `COMM_TRIGRAMME` varchar(3) NOT NULL, `COMM_NOM` varchar(255) default NULL, `COMM_PRENOM` varchar(255) default NULL, PRIMARY KEY (`COMM_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
J'ai une JSP toute simple qui fait appel à une servlet qui fait appel à l'EJB session et en particulier à une méthode qui insert les informations du formulaire de la JSP (nom,prenom et trigramme) dans la base de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 @Entity @Table(name="COMMERCIAL") public class Commercial { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "COMM_ID",updatable=false) private int id; @Column(name="COMM_PRENOM") private String firstname; @Column(name="COMM_NOM") private String lastname; @Column(name="COMM_TRIGRAMME") private String trigramme; //getter et setter }
Mon problème est que à la validation du formulaire, l'insertion me renvoie l'erreur suivante :
La requete hibernate envoyée est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 'COMM_ID' doesn't have a default value at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2934) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1616) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1708) at com.mysql.jdbc.Connection.execSQL(Connection.java:3255) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1293) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1566) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1480) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1465) at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:365) at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57) ... 92 more
Je vois bien que il manque l'id COMM_ID dans la requete qui est executer mais je voudrais que hibernate se charge de l'inserer automatiquement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Hibernate: insert into COMMERCIAL (COMM_PRENOM, COMM_NOM, COMM_TRIGRAMME) values (?, ?, ?)
Je suppose que il y doit y avoir un lien avec les annotations de l'entity mais ...
merci d'avance









Répondre avec citation
Partager