Hallo zusammen
Ich versuche mit Hibernate Daten in einer Datenbank zu speichern. Um dies zu tun, erstellte ich die nötigen DAOs, Modelle, die HibernateUtil Klasse, usw. Dies anhand des Codes von Hibernate in Action Second Edition (HiA_SE).
Wenn ich versuche über das DAO Objekte zu speichern, bekomme ich die folgende Exception
Exception in thread "main" org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [ch.teamrg.dev.rgrepd.model.Checksum#0]
at org.hibernate.engine.StatefulPersistenceContext.checkUniqueness(StatefulPersistenceContext.java:556)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:258)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:216)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:502)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:494)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:490)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
at $Proxy0.saveOrUpdate(Unknown Source)
at ch.teamrg.dev.rgrepd.dao.hibernate.GenericHibernateDAO.makePersistent(GenericHibernateDAO.java:75)
at ch.teamrg.dev.rgrepd.test.model.InsertData.main(InsertData.java:28)
Die Exception bekomme ich beim Versuch, das Objekt "checksum2" zu speichern. Die DAOFactory ist gleich wie die aus dem SVN.
Code:
public class InsertData {
static private void beginTransaction() {
HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();
}
static private void commitTransaction() {
HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().commit();
}
public static void main(String[] args) {
DAOFactory daoFactory = DAOFactory.instance(DAOFactory.HIBERNATE);
/*
* Checksum
*/
ChecksumDAO checksumDAO = daoFactory.getChecksumDAO();
beginTransaction();
Checksum checksum1 = new Checksum("md5", "abcdefgmd5");
Checksum checksum2 = new Checksum("sha-1", "jklmnopqsha1");
checksumDAO.makePersistent(checksum1);
checksumDAO.makePersistent(checksum2);
commitTransaction();
}
}
Was mache ich falsch? Vielen Dank für eure Hilfe.
Tux