Bonjour,
C'est sans doute une question de débutant en hibernate, mais voilà je n'arrive décidement pas à insérer quoique ce soit dans ma table dans une DB MySQL 5 en innodb...
Voici le pojo
Le mapping:
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 package hibernate; /** * Items generated by hbm2java */ public class Items implements java.io.Serializable { // Fields private int itemId; private int itemTypeId; private String itemName; // Constructors public Items(int id, int itemTypeId, String itemName){ this.itemId = id; this.itemTypeId = itemTypeId; this.itemName = itemName; } /** default constructor */ public Items() { } // Property accessors public int getItemId() { return this.itemId; } public void setItemId(int itemId) { this.itemId = itemId; } public int getItemTypeId() { return this.itemTypeId; } public void setItemTypeId(int itemTypeId) { this.itemTypeId = itemTypeId; } public String getItemName() { return this.itemName; } public void setItemName(String itemName) { this.itemName = itemName; } }
le cfg:
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
23 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 14-mars-2006 19:20:12 by Hibernate Tools 3.1.0 beta3 --> <hibernate-mapping> <class name="hibernate.Items" table="ITEMS"> <id name="itemId" type="int"> <column name="ItemId" /> <generator class="identity" /> </id> <property name="itemTypeId" type="int"> <column name="ItemTypeId" not-null="true" /> </property> <property name="itemName" type="string"> <column name="ItemName" length="100" not-null="true" /> </property> </class> </hibernate-mapping>
le test:
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 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory name="MyFactory"> <!--property name="hibernate.cglib.use_reflection_optimizer">true</property--> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.password">blablabla</property> <property name="hibernate.connection.url">jdbc:mysql://localhost/MyTest</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.default_catalog">MyTest</property> <property name="hibernate.default_schema">MyTest</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <!-- property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property--> <property name="hibernate.show_sql">true</property> <mapping file="./hibernate/Items.hbm.xml"/> </session-factory> </hibernate-configuration>
et voilà le stacktrace
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
23
24
25
26
27
28
29
30 public class TestClass { public TestClass(){ Configuration cfg = new Configuration(); cfg.configure("./hibernate/hibernate.cfg.xml"); SessionFactory sessionFactory = cfg.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Items item = new Items(); item.setItemName("Test"); item.setItemTypeId(0); session.save(item); transaction.commit(); } /** * @param args */ public static void main(String[] args) { new TestClass(); } }
La table items est la suivante: ItemId (INTEGER autoincrementé), ItemTypeId (INTEGER), ItemName(VARCHAR 100)
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
23
24
25
26
27
28
29
30
31
32
33 Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not insert: [hibernate.Items] at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:65) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:1986) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2405) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:37) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:243) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:269) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:544) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:533) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:529) at Tests.TestClass.<init>(TestClass.java:37) at Tests.TestClass.main(TestClass.java:46) Caused by: java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.ITEMS (ItemTypeId, ItemName) values (0, 'Test')' at line 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666) at com.mysql.jdbc.Connection.execSQL(Connection.java:2994) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:936) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1166) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1082) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1067) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:1968) ... 16 more
J'ai déjà chipotté avec les types dans le pojo et le mapping ainsi que le dialect dans le cfg, mais pas de succès...
un petite idée ? :
Merci d'avance ...
Greg
Partager