Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version: 3.1
Mapping documents:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.venture.hibernate.Bar" table="bar" dynamic-insert="true" dynamic-update="true">
<id name="barID" type="java.lang.Integer" column="barID" >
<generator class="increment" />
</id>
<property name="barName" type="string" update="false" insert="false">
<column name="bar_name" length="20" />
</property>
<set name="stocks" inverse="true">
<key column="barID"></key>
<one-to-many class="com.venture.hibernate.Stock"/>
</set>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.venture.hibernate.Stock" table="inventory" >
<id name="stockID" type="java.lang.Integer" column="inventoryID" >
<generator class="increment" />
</id>
<property name="product" type="string" length="20">
<column name="productid"></column>
</property>
<property name="quantity" type="integer">
<column name="quantity"></column>
</property>
<many-to-one name="bar"
column="barID"
class="com.venture.hibernate.Bar"
/>
</class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():
session = createSession();
Transaction trans = session.beginTransaction();
session.save(stock);
trans.commit();
session.close();
Full stack trace of any exception that occurs:
Hibernate: select max(inventoryID) from inventory
Exception in thread "main" org.hibernate.TransientObjectException: com.venture.hibernate.Bar
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:216)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:108)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:221)
at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:476)
at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:2803)
at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:467)
at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:190)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:113)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at com.venture.hibernate.SQLImpl.insertStockDetails(SQLImpl.java:15)
at com.venture.hibernate.Test.main(Test.java:20)
Name and version of the database you are using:
MySQL 5
The generated SQL (show_sql=true):
Hibernate: select max(inventoryID) from inventory
Debug level Hibernate log excerpt:
Problems with Session and transaction handling?
No
Read this:
http://hibernate.org/42.html