[HIBERNATE] Problème d'insert
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... :cry:
Voici le pojo
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 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:
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:
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:
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:
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... :evil:
:idea: un petite idée ? :?:
Merci d'avance ...
Greg