I'm creating 2 not-persisted objects and they have the same persisted object as
instance variable. if i try to persist the new objects, i got a Duplicate entry
violation. i know what it means, but i don't know what is wrong.
can you please look at these small classes and point what is missing? Thank you.
@Entity
| public class Gene implements java.io.Serializable {
| @Id @GeneratedValue private Integer id;
|
| private String name;
|
| @OneToMany()
| private List<CancerType> cancerTypes;
| public Gene() { }
|
| // Setters and Getters
| }
Table CancerType is filled with some data after table creation!
@Entity
| public class CancerType implements java.io.Serializable {
| @Id @GeneratedValue private Integer id;
|
| private String name;
|
| public CancerType(){ }
|
| // Setters and Getters
| }
And the main:
Session session = new
AnnotationConfiguration().configure().buildSessionFactory().getCurrentSession();
| session.beginTransaction();
|
| Gene g1 = new Gene();
| g1.setName("name");
| Gene g2 = new Gene();
| g2.setName("name");
|
| List<CancerType> cts = BasicDAO.session.createQuery("from
CancerType").list();
|
| g1.setCancerType(cts);
| g2.setCancerType(cts);
|
| session.save(g1);
| session.save(g2);
|
| session.getTransaction().commit();
|
Output:
Hibernate: select cancertype0_.id as id0_, cancertype0_.name as name0_ from
CancerType cancertype0_
| Hibernate: insert into Gene (name) values (?)
| Hibernate: insert into Gene (name) values (?)
| Hibernate: insert into Gene_CancerType (Gene_id, cancerTypes_id) values (?,
?)
| Hibernate: insert into Gene_CancerType (Gene_id, cancerTypes_id) values (?,
?)
| 00:01:39,109 WARN JDBCExceptionReporter:77 - SQL Error: 1062, SQLState:
23000
| 00:01:39,109 ERROR JDBCExceptionReporter:78 - Duplicate entry '1' for key 1
| 00:01:39,109 ERROR AbstractFlushingEventListener:301 - Could not
synchronize database state with session
| org.hibernate.exception.ConstraintViolationException: Could not execute
JDBC batch update
| at
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
| Exception in thread "main"
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC
batch update
| at
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
| at
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
| at
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
| at
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
| at
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:143)
| at
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
| at
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
| at
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
| at
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
| at
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:143)
| at
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
| at
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
| at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
| at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
| at
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
| at tvsas1.Main.a2(Main.java:58)
| at tvsas1.Main.main(Main.java:64)
| Caused by: java.sql.BatchUpdateException: Duplicate entry '1' for key 1
| at
com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1237)
| at
com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:936)
| at
org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
| at
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
| ... 9 more
| at
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
| at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
| at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
| at
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
| at tvsas1.Main.a2(Main.java:58)
| at tvsas1.Main.main(Main.java:64)
| Caused by: java.sql.BatchUpdateException: Duplicate entry '1' for key 1
| at
com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1237)
| at
com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:936)
| at
org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
| at
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
| ... 9 more
|
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4060587#4060587
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4060587
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user