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
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 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
 
<?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 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
 
<?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>
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
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();
	}
 
}
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
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
La table items est la suivante: ItemId (INTEGER autoincrementé), ItemTypeId (INTEGER), ItemName(VARCHAR 100)

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