-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Problem with merge of collections and generated id
PostPosted: Fri Jul 25, 2008 2:06 pm 
Newbie

Joined: Thu Jul 24, 2008 5:42 pm
Posts: 2
Hi, I’ve been having problems with the following setup. I have the tables Group and Role, there is a many to many bidirectional relationship between the two. I am trying to create a new role (which has a generated id named guid) and, in the same transaction, assign an existing group to the new role. The transaction fails because the generated id for the new role is not used on the insert for the join table. At the time in of creating I only have the primary key for the group that I want to assign, so I get a reference to it and assign it to the corresponding set.

I read in one post that a merge cannot distinguish between a new role and a previous existing role, if that is the case what are my options?

I appreciate any help you can provide.

Thanks in advance

Hibernate version:
hibernate 3.2
enitymanager 3.3.2

Mapping documents:
Code:
@MappedSuperclass
public abstract class BusinessObject {
   
   /** Global unique identifier for the group. Generated by Hibernate. */
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    @Column(name = "GUID", length = 32)
    protected String guid;

//getters and setters
}

@Entity
@Table(name = "ROLE2")
public class RoleBO extends BusinessObject {
    /** Identifier for the role */
    @Column(name = "NAME", length = 30, unique = true)
    private String name;

    /** Brief role description */
    @Column(name = "DESCRIPTION")
    private String description;

  /** Groups associated with the role */
    @ManyToMany(mappedBy = "roles", fetch=FetchType.EAGER )
    @OrderBy("name")
@org.hibernate.annotations.Fetch(org.hibernate.annotations.FetchMode.SUBSELECT)
    private Set<GroupBO> groups = new HashSet<GroupBO>();

// getters and setters

}

@Entity
@Table(name = "GROUP2")
public class GroupBO extends BusinessObject {

    /** Identifier for the group */
    @Column(name = "NAME", length = 30, unique = true)
    private String name;

    /** Brief group description */
    @Column(name = "DESCRIPTION")
    private String description;

    /** Roles associated with the group */
    @ManyToMany( fetch=FetchType.EAGER )
@org.hibernate.annotations.Fetch(org.hibernate.annotations.FetchMode.SUBSELECT)
    private Set<RoleBO> roles = new HashSet<RoleBO>();

//Getters and setters

}



Code between sessionFactory.openSession() and session.close():
Code:
entityManager = entityManagerFactory.createEntityManager();
//Obtain transaction
EntityTransaction transaction = entityManager.getTransaction();
//Initialize transaction
transaction.begin();

//At this point the groups are empty with only the primary key
// populated, so I load them using getReferece
Set<com.cqi.tiburon.bo.GroupBO> groups = role.getGroups();

for (com.cqi.tiburon.bo.GroupBO group : groups) {
com.cqi.tiburon.bo.GroupBO loadedGroup = entityManager.getReference(com.cqi.tiburon.bo.GroupBO.class,
                        group.getGuid());
                loadedGroup.getRoles().add(role);
}

entityManager.merge(role);

transaction.commit();
entityManager.close();

Full stack trace of any exception that occurs:

2:08:43,104 DEBUG JDBCExceptionReporter - Could not execute JDBC batch update [insert into GROUP2_ROLE2 (groups_GUID, roles_GUID) values (?, ?)]
java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("JVAZQUEZ"."GROUP2_ROLE2"."ROLES_GUID")

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10656)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:170)
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 org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
at com.cqi.tiburon.business.service.Service.commitTransaction(Service.java:78)
at com.cqi.tiburon.business.service.Service.saveUpdateBO(Service.java:137)
at com.cqi.tiburon.business.SecAdminDelegate.saveUpdateBean(SecAdminDelegate.java:79)
at com.cqi.tiburon.bean.Role.saveUpdateRole(Role.java:119)
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.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
at javax.faces.component.UICommand.broadcast(UICommand.java:109)
at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:548)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
12:08:43,104 WARN JDBCExceptionReporter - SQL Error: 1400, SQLState: 23000
12:08:43,104 ERROR JDBCExceptionReporter - ORA-01400: cannot insert NULL into ("JVAZQUEZ"."GROUP2_ROLE2"."ROLES_GUID")

12:08:43,104 WARN JDBCExceptionReporter - SQL Error: 1400, SQLState: 23000
12:08:43,104 ERROR JDBCExceptionReporter - ORA-01400: cannot insert NULL into ("JVAZQUEZ"."GROUP2_ROLE2"."ROLES_GUID")

12:08:43,104 ERROR AbstractFlushingEventListener - 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)
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:266)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:170)
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 org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
at com.cqi.tiburon.business.service.Service.commitTransaction(Service.java:78)
at com.cqi.tiburon.business.service.Service.saveUpdateBO(Service.java:137)
at com.cqi.tiburon.business.SecAdminDelegate.saveUpdateBean(SecAdminDelegate.java:79)
at com.cqi.tiburon.bean.Role.saveUpdateRole(Role.java:119)
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.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
at javax.faces.component.UICommand.broadcast(UICommand.java:109)
at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:548)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("JVAZQUEZ"."GROUP2_ROLE2"."ROLES_GUID")

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10656)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
... 41 more
Name and version of the database you are using:
Oracle 10g

The generated SQL (show_sql=true):
12:02:01,414 DEBUG SQL - select groupbo0_.GUID as GUID15_0_, groupbo0_.DESCRIPTION as DESCRIPT2_15_0_, groupbo0_.IMPORTEDFLAG as IMPORTED3_15_0_, groupbo0_.NAME as NAME15_0_ from GROUP2 groupbo0_ where groupbo0_.GUID=?
12:02:01,414 DEBUG SQL - select users0_.groups_GUID as groups2_1_, users0_.users_GUID as users1_1_, userbo1_.GUID as GUID13_0_, userbo1_.EMAIL as EMAIL13_0_, userbo1_.EXT_PASSWORD as EXT3_13_0_, userbo1_.EXT_USERID as EXT4_13_0_, userbo1_.FIRST_NAME as FIRST5_13_0_, userbo1_.IMPORTEDFLAG as IMPORTED6_13_0_, userbo1_.LAST_NAME as LAST7_13_0_, userbo1_.LOCKEDFLAG as LOCKEDFLAG13_0_, userbo1_.NUM_FAILED_LOGINS as NUM9_13_0_, userbo1_.PASSWORD as PASSWORD13_0_, userbo1_.USER_ID as USER11_13_0_ from USER2_GROUP2 users0_ left outer join USER2 userbo1_ on users0_.users_GUID=userbo1_.GUID where users0_.groups_GUID=?
12:02:01,414 DEBUG SQL - select roles0_.users_GUID as users1_1_, roles0_.roles_GUID as roles2_1_, rolebo1_.GUID as GUID14_0_, rolebo1_.DESCRIPTION as DESCRIPT2_14_0_, rolebo1_.NAME as NAME14_0_ from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID=? order by rolebo1_.NAME asc
12:02:01,429 DEBUG SQL - select users0_.roles_GUID as roles2_1_, users0_.users_GUID as users1_1_, userbo1_.GUID as GUID13_0_, userbo1_.EMAIL as EMAIL13_0_, userbo1_.EXT_PASSWORD as EXT3_13_0_, userbo1_.EXT_USERID as EXT4_13_0_, userbo1_.FIRST_NAME as FIRST5_13_0_, userbo1_.IMPORTEDFLAG as IMPORTED6_13_0_, userbo1_.LAST_NAME as LAST7_13_0_, userbo1_.LOCKEDFLAG as LOCKEDFLAG13_0_, userbo1_.NUM_FAILED_LOGINS as NUM9_13_0_, userbo1_.PASSWORD as PASSWORD13_0_, userbo1_.USER_ID as USER11_13_0_ from USER2_ROLE2 users0_ left outer join USER2 userbo1_ on users0_.users_GUID=userbo1_.GUID where users0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID=? ) order by userbo1_.USER_ID asc
12:02:01,429 DEBUG SQL - select roles0_.users_GUID as users1_1_, roles0_.roles_GUID as roles2_1_, rolebo1_.GUID as GUID14_0_, rolebo1_.DESCRIPTION as DESCRIPT2_14_0_, rolebo1_.NAME as NAME14_0_ from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID in (select userbo1_.GUID from USER2_ROLE2 users0_ left outer join USER2 userbo1_ on users0_.users_GUID=userbo1_.GUID where users0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID=? ) ) order by rolebo1_.NAME asc
12:02:01,445 DEBUG SQL - select users0_.roles_GUID as roles2_1_, users0_.users_GUID as users1_1_, userbo1_.GUID as GUID13_0_, userbo1_.EMAIL as EMAIL13_0_, userbo1_.EXT_PASSWORD as EXT3_13_0_, userbo1_.EXT_USERID as EXT4_13_0_, userbo1_.FIRST_NAME as FIRST5_13_0_, userbo1_.IMPORTEDFLAG as IMPORTED6_13_0_, userbo1_.LAST_NAME as LAST7_13_0_, userbo1_.LOCKEDFLAG as LOCKEDFLAG13_0_, userbo1_.NUM_FAILED_LOGINS as NUM9_13_0_, userbo1_.PASSWORD as PASSWORD13_0_, userbo1_.USER_ID as USER11_13_0_ from USER2_ROLE2 users0_ left outer join USER2 userbo1_ on users0_.users_GUID=userbo1_.GUID where users0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID in (select userbo1_.GUID from USER2_ROLE2 users0_ left outer join USER2 userbo1_ on users0_.users_GUID=userbo1_.GUID where users0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID=? ) ) ) order by userbo1_.USER_ID asc
12:02:01,460 DEBUG SQL - select groups0_.roles_GUID as roles2_1_, groups0_.groups_GUID as groups1_1_, groupbo1_.GUID as GUID15_0_, groupbo1_.DESCRIPTION as DESCRIPT2_15_0_, groupbo1_.IMPORTEDFLAG as IMPORTED3_15_0_, groupbo1_.NAME as NAME15_0_ from GROUP2_ROLE2 groups0_ left outer join GROUP2 groupbo1_ on groups0_.groups_GUID=groupbo1_.GUID where groups0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID in (select userbo1_.GUID from USER2_ROLE2 users0_ left outer join USER2 userbo1_ on users0_.users_GUID=userbo1_.GUID where users0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID=? ) ) ) order by groupbo1_.NAME asc
12:02:01,476 DEBUG SQL - select users0_.groups_GUID as groups2_1_, users0_.users_GUID as users1_1_, userbo1_.GUID as GUID13_0_, userbo1_.EMAIL as EMAIL13_0_, userbo1_.EXT_PASSWORD as EXT3_13_0_, userbo1_.EXT_USERID as EXT4_13_0_, userbo1_.FIRST_NAME as FIRST5_13_0_, userbo1_.IMPORTEDFLAG as IMPORTED6_13_0_, userbo1_.LAST_NAME as LAST7_13_0_, userbo1_.LOCKEDFLAG as LOCKEDFLAG13_0_, userbo1_.NUM_FAILED_LOGINS as NUM9_13_0_, userbo1_.PASSWORD as PASSWORD13_0_, userbo1_.USER_ID as USER11_13_0_ from USER2_GROUP2 users0_ left outer join USER2 userbo1_ on users0_.users_GUID=userbo1_.GUID where users0_.groups_GUID in (select groupbo1_.GUID from GROUP2_ROLE2 groups0_ left outer join GROUP2 groupbo1_ on groups0_.groups_GUID=groupbo1_.GUID where groups0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID in (select userbo1_.GUID from USER2_ROLE2 users0_ left outer join USER2 userbo1_ on users0_.users_GUID=userbo1_.GUID where users0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID=? ) ) ) )
12:02:01,492 DEBUG SQL - select roles0_.groups_GUID as groups1_1_, roles0_.roles_GUID as roles2_1_, rolebo1_.GUID as GUID14_0_, rolebo1_.DESCRIPTION as DESCRIPT2_14_0_, rolebo1_.NAME as NAME14_0_ from GROUP2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.groups_GUID in (select groupbo1_.GUID from GROUP2_ROLE2 groups0_ left outer join GROUP2 groupbo1_ on groups0_.groups_GUID=groupbo1_.GUID where groups0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID in (select userbo1_.GUID from USER2_ROLE2 users0_ left outer join USER2 userbo1_ on users0_.users_GUID=userbo1_.GUID where users0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID=? ) ) ) )

12:02:01,507 DEBUG SQL - select groups0_.users_GUID as users1_1_, groups0_.groups_GUID as groups2_1_, groupbo1_.GUID as GUID15_0_, groupbo1_.DESCRIPTION as DESCRIPT2_15_0_, groupbo1_.IMPORTEDFLAG as IMPORTED3_15_0_, groupbo1_.NAME as NAME15_0_ from USER2_GROUP2 groups0_ left outer join GROUP2 groupbo1_ on groups0_.groups_GUID=groupbo1_.GUID where groups0_.users_GUID in (select userbo1_.GUID from USER2_GROUP2 users0_ left outer join USER2 userbo1_ on users0_.users_GUID=userbo1_.GUID where users0_.groups_GUID in (select groupbo1_.GUID from GROUP2_ROLE2 groups0_ left outer join GROUP2 groupbo1_ on groups0_.groups_GUID=groupbo1_.GUID where groups0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID in (select userbo1_.GUID from USER2_ROLE2 users0_ left outer join USER2 userbo1_ on users0_.users_GUID=userbo1_.GUID where users0_.roles_GUID in (select rolebo1_.GUID from USER2_ROLE2 roles0_ left outer join ROLE2 rolebo1_ on roles0_.roles_GUID=rolebo1_.GUID where roles0_.users_GUID=? ) ) ) )) order by groupbo1_.NAME asc
12:02:01,523 DEBUG SQL - select rolebo0_.GUID as GUID14_0_, rolebo0_.DESCRIPTION as DESCRIPT2_14_0_, rolebo0_.NAME as NAME14_0_ from ROLE2 rolebo0_ where rolebo0_.GUID=?
12:02:01,570 DEBUG SQL - insert into ROLE2 (DESCRIPTION, NAME, GUID) values (?, ?, ?)
12:02:01,585 DEBUG SQL - insert into GROUP2_ROLE2 (groups_GUID, roles_GUID) values (?, ?)

Debug level Hibernate log excerpt:

12:08:42,995 DEBUG DefaultMergeEventListener - merging transient instance
12:08:42,995 DEBUG AbstractSaveEventListener - generated identifier: 8a8181ed1b5afa44011b5afaaef30002, using strategy: org.hibernate.id.UUIDHexGenerator
12:08:42,995 DEBUG AbstractSaveEventListener - saving [com.cqi.tiburon.bo.RoleBO#8a8181ed1b5afa44011b5afaaef30002]
12:08:42,995 DEBUG WrapVisitor - Wrapped collection in role: com.cqi.tiburon.bo.RoleBO.features
12:08:42,995 DEBUG WrapVisitor - Wrapped collection in role: com.cqi.tiburon.bo.RoleBO.groups
12:08:42,995 DEBUG WrapVisitor - Wrapped collection in role: com.cqi.tiburon.bo.RoleBO.users
12:08:43,011 DEBUG IdentifierValue - id unsaved-value: null
12:08:43,011 DEBUG DefaultLoadEventListener - loading entity: [com.cqi.tiburon.bo.GroupBO#8a8181ed1b461252011b461429860004]
12:08:43,011 DEBUG DefaultLoadEventListener - entity proxy found in session cache
12:08:43,011 DEBUG DefaultLoadEventListener - attempting to resolve: [com.cqi.tiburon.bo.GroupBO#8a8181ed1b461252011b461429860004]
12:08:43,011 DEBUG DefaultLoadEventListener - resolved object in session cache: [com.cqi.tiburon.bo.GroupBO#8a8181ed1b461252011b461429860004]
12:08:43,011 DEBUG Service - Commiting transaction.
12:08:43,011 DEBUG JDBCTransaction - commit
12:08:43,011 DEBUG SessionImpl - automatically flushing session
12:08:43,011 DEBUG AbstractFlushingEventListener - flushing session
12:08:43,011 DEBUG AbstractFlushingEventListener - processing flush-time cascades
12:08:43,011 DEBUG Cascade - processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.GroupBO
12:08:43,011 DEBUG Cascade - done processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.GroupBO
12:08:43,011 DEBUG Cascade - processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.UserBO
12:08:43,011 DEBUG Cascade - done processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.UserBO
12:08:43,011 DEBUG Cascade - processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.UserBO
12:08:43,011 DEBUG Cascade - done processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.UserBO
12:08:43,011 DEBUG Cascade - processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.RoleBO
12:08:43,011 DEBUG Cascade - done processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.RoleBO
12:08:43,011 DEBUG Cascade - processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.RoleBO
12:08:43,011 DEBUG Cascade - done processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.RoleBO
12:08:43,011 DEBUG Cascade - processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.RoleBO
12:08:43,011 DEBUG Cascade - done processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.RoleBO
12:08:43,011 DEBUG Cascade - processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.RoleBO
12:08:43,011 DEBUG Cascade - done processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.RoleBO
12:08:43,011 DEBUG Cascade - processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.GroupBO
12:08:43,011 DEBUG Cascade - done processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.GroupBO
12:08:43,011 DEBUG Cascade - processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.GroupBO
12:08:43,011 DEBUG Cascade - done processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.GroupBO
12:08:43,011 DEBUG Cascade - processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.RoleBO
12:08:43,011 DEBUG Cascade - done processing cascade ACTION_PERSIST_ON_FLUSH for: com.cqi.tiburon.bo.RoleBO
12:08:43,011 DEBUG AbstractFlushingEventListener - dirty checking collections
12:08:43,011 DEBUG CollectionEntry - Collection dirty: [com.cqi.tiburon.bo.GroupBO.roles#8a8181ed1b461252011b461429860004]
12:08:43,011 DEBUG AbstractFlushingEventListener - Flushing entities and processing referenced collections
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.GroupBO.roles#8a8181ed1b461252011b461429860004], was: [com.cqi.tiburon.bo.GroupBO.roles#8a8181ed1b461252011b461429860004] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.GroupBO.users#8a8181ed1b461252011b461429860004], was: [com.cqi.tiburon.bo.GroupBO.users#8a8181ed1b461252011b461429860004] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.UserBO.groups#8a8181ed1b461252011b4612e35a0002], was: [com.cqi.tiburon.bo.UserBO.groups#8a8181ed1b461252011b4612e35a0002] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.UserBO.roles#8a8181ed1b461252011b4612e35a0002], was: [com.cqi.tiburon.bo.UserBO.roles#8a8181ed1b461252011b4612e35a0002] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.UserBO.groups#1], was: [com.cqi.tiburon.bo.UserBO.groups#1] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.UserBO.roles#1], was: [com.cqi.tiburon.bo.UserBO.roles#1] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.features#4], was: [com.cqi.tiburon.bo.RoleBO.features#4] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.groups#4], was: [com.cqi.tiburon.bo.RoleBO.groups#4] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.users#4], was: [com.cqi.tiburon.bo.RoleBO.users#4] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.features#6], was: [com.cqi.tiburon.bo.RoleBO.features#6] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.groups#6], was: [com.cqi.tiburon.bo.RoleBO.groups#6] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.users#6], was: [com.cqi.tiburon.bo.RoleBO.users#6] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.features#8a8181ed1b461e53011b461f09380003], was: [com.cqi.tiburon.bo.RoleBO.features#8a8181ed1b461e53011b461f09380003] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.groups#8a8181ed1b461e53011b461f09380003], was: [com.cqi.tiburon.bo.RoleBO.groups#8a8181ed1b461e53011b461f09380003] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.users#8a8181ed1b461e53011b461f09380003], was: [com.cqi.tiburon.bo.RoleBO.users#8a8181ed1b461e53011b461f09380003] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.features#5], was: [com.cqi.tiburon.bo.RoleBO.features#5] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.groups#5], was: [com.cqi.tiburon.bo.RoleBO.groups#5] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.users#5], was: [com.cqi.tiburon.bo.RoleBO.users#5] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.GroupBO.roles#2], was: [com.cqi.tiburon.bo.GroupBO.roles#2] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.GroupBO.users#2], was: [com.cqi.tiburon.bo.GroupBO.users#2] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.GroupBO.roles#3], was: [com.cqi.tiburon.bo.GroupBO.roles#3] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.GroupBO.users#3], was: [com.cqi.tiburon.bo.GroupBO.users#3] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.features#8a8181ed1b5afa44011b5afaaef30002], was: [<unreferenced>] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.groups#8a8181ed1b5afa44011b5afaaef30002], was: [<unreferenced>] (initialized)
12:08:43,011 DEBUG Collections - Collection found: [com.cqi.tiburon.bo.RoleBO.users#8a8181ed1b5afa44011b5afaaef30002], was: [<unreferenced>] (initialized)
12:08:43,011 DEBUG AbstractFlushingEventListener - Processing unreferenced collections
12:08:43,011 DEBUG AbstractFlushingEventListener - Scheduling collection removes/(re)creates/updates
12:08:43,026 DEBUG AbstractFlushingEventListener - Flushed: 1 insertions, 0 updates, 0 deletions to 10 objects
12:08:43,026 DEBUG AbstractFlushingEventListener - Flushed: 3 (re)creations, 1 updates, 0 removals to 25 collections
12:08:43,026 DEBUG Printer - listing entities:
12:08:43,026 DEBUG Printer - com.cqi.tiburon.bo.RoleBO{groups=[com.cqi.tiburon.bo.GroupBO#3], users=[com.cqi.tiburon.bo.UserBO#8a8181ed1b461252011b4612e35a0002], features=[], description=The Dashboard viewer role, guid=6, name=DashboardViewer}
12:08:43,026 DEBUG Printer - com.cqi.tiburon.bo.GroupBO{importedFlag=null, users=[com.cqi.tiburon.bo.UserBO#1, com.cqi.tiburon.bo.UserBO#8a8181ed1b461252011b4612e35a0002], description=test group, guid=8a8181ed1b461252011b461429860004, roles=[com.cqi.tiburon.bo.RoleBO#, com.cqi.tiburon.bo.RoleBO#8a8181ed1b461e53011b461f09380003], name=MyGroup}
12:08:43,026 DEBUG Printer - com.cqi.tiburon.bo.RoleBO{groups=[com.cqi.tiburon.bo.GroupBO#8a8181ed1b461252011b461429860004], users=[], features=[], description=Role description, guid=8a8181ed1b5afa44011b5afaaef30002, name=TheRoleName}
12:08:43,026 DEBUG Printer - com.cqi.tiburon.bo.RoleBO{groups=[], users=[com.cqi.tiburon.bo.UserBO#1, com.cqi.tiburon.bo.UserBO#8a8181ed1b461252011b4612e35a0002], features=[], description=The Administrators role, guid=4, name=Administrators}
12:08:43,026 DEBUG Printer - com.cqi.tiburon.bo.RoleBO{groups=[], users=[com.cqi.tiburon.bo.UserBO#1], features=[], description=The Report Creation role, guid=5, name=ReportCreation}
12:08:43,026 DEBUG Printer - com.cqi.tiburon.bo.UserBO{password=PuFx+M1c2BRNHRmUdd9IyYnslRA=, extPassword=cqtest, importedFlag=null, numFailedLogins=0, lockedFlag=true, userId=newUser1, roles=[com.cqi.tiburon.bo.RoleBO#4, com.cqi.tiburon.bo.RoleBO#6, com.cqi.tiburon.bo.RoleBO#8a8181ed1b461e53011b461f09380003], extUserId=cqtest, firstName=test, lastName=test, groups=[com.cqi.tiburon.bo.GroupBO#2, com.cqi.tiburon.bo.GroupBO#8a8181ed1b461252011b461429860004], guid=8a8181ed1b461252011b4612e35a0002, email=test@here.com}
12:08:43,026 DEBUG Printer - com.cqi.tiburon.bo.GroupBO{importedFlag=null, users=[com.cqi.tiburon.bo.UserBO#1], description=The Managers group, guid=3, roles=[com.cqi.tiburon.bo.RoleBO#6], name=Managers}
12:08:43,026 DEBUG Printer - com.cqi.tiburon.bo.RoleBO{groups=[com.cqi.tiburon.bo.GroupBO#2, com.cqi.tiburon.bo.GroupBO#8a8181ed1b461252011b461429860004], users=[com.cqi.tiburon.bo.UserBO#1, com.cqi.tiburon.bo.UserBO#8a8181ed1b461252011b4612e35a0002], features=[], description=test role, guid=8a8181ed1b461e53011b461f09380003, name=MyRole}
12:08:43,026 DEBUG Printer - com.cqi.tiburon.bo.GroupBO{importedFlag=null, users=[com.cqi.tiburon.bo.UserBO#1, com.cqi.tiburon.bo.UserBO#8a8181ed1b461252011b4612e35a0002], description=The everyone group, guid=2, roles=[com.cqi.tiburon.bo.RoleBO#8a8181ed1b461e53011b461f09380003], name=Everyone}
12:08:43,026 DEBUG Printer - com.cqi.tiburon.bo.UserBO{password=3ZRwlSi7HIPQjzCI1AQ/R0KJH08=, extPassword=null, importedFlag=null, numFailedLogins=0, lockedFlag=null, userId=admin, roles=[com.cqi.tiburon.bo.RoleBO#4, com.cqi.tiburon.bo.RoleBO#8a8181ed1b461e53011b461f09380003, com.cqi.tiburon.bo.RoleBO#5], extUserId=null, firstName=Tiburon, lastName=Administrator, groups=[com.cqi.tiburon.bo.GroupBO#2, com.cqi.tiburon.bo.GroupBO#3, com.cqi.tiburon.bo.GroupBO#8a8181ed1b461252011b461429860004], guid=1, email=null}
12:08:43,026 DEBUG AbstractFlushingEventListener - executing flush
12:08:43,026 DEBUG ConnectionManager - registering flush begin
12:08:43,026 DEBUG AbstractEntityPersister - Inserting entity: [com.cqi.tiburon.bo.RoleBO#8a8181ed1b5afa44011b5afaaef30002]
12:08:43,042 DEBUG AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
12:08:43,042 DEBUG SQL - insert into ROLE2 (DESCRIPTION, NAME, GUID) values (?, ?, ?)
12:08:43,042 DEBUG AbstractBatcher - preparing statement
12:08:43,042 DEBUG AbstractEntityPersister - Dehydrating entity: [com.cqi.tiburon.bo.RoleBO#8a8181ed1b5afa44011b5afaaef30002]
12:08:43,042 DEBUG StringType - binding 'Role description' to parameter: 1
12:08:43,042 DEBUG StringType - binding 'TheRoleName' to parameter: 2
12:08:43,042 DEBUG StringType - binding '8a8181ed1b5afa44011b5afaaef30002' to parameter: 3
12:08:43,058 DEBUG AbstractBatcher - Executing batch size: 1
12:08:43,058 DEBUG Expectations - success of batch update unknown: 0
12:08:43,058 DEBUG AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
12:08:43,058 DEBUG AbstractBatcher - closing statement
12:08:43,058 DEBUG AbstractCollectionPersister - Deleting rows of collection: [com.cqi.tiburon.bo.GroupBO.roles#8a8181ed1b461252011b461429860004]
12:08:43,058 DEBUG AbstractCollectionPersister - no rows to delete
12:08:43,058 DEBUG AbstractCollectionPersister - Inserting rows of collection: [com.cqi.tiburon.bo.GroupBO.roles#8a8181ed1b461252011b461429860004]
12:08:43,058 DEBUG AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
12:08:43,058 DEBUG SQL - insert into GROUP2_ROLE2 (groups_GUID, roles_GUID) values (?, ?)
12:08:43,058 DEBUG AbstractBatcher - preparing statement
12:08:43,058 DEBUG StringType - binding '8a8181ed1b461252011b461429860004' to parameter: 1
12:08:43,058 DEBUG IdentifierValue - id unsaved-value: null
12:08:43,058 DEBUG StringType - binding '' to parameter: 2
12:08:43,058 DEBUG AbstractCollectionPersister - done inserting rows: 1 inserted
12:08:43,058 DEBUG AbstractBatcher - Executing batch size: 1
12:08:43,104 DEBUG AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
12:08:43,104 DEBUG AbstractBatcher - closing statement


Last edited by jvazquez on Wed Jul 30, 2008 10:22 am, edited 1 time in total.

Top
 Profile  
 
 Post subject: Re: Problem with merge of collections and generated id
PostPosted: Wed Jul 30, 2008 10:14 am 
Newbie

Joined: Thu Jul 24, 2008 5:42 pm
Posts: 2
I was able to resolve my problem by changing the order in the actions between the open and close session
Code:
entityManager = entityManagerFactory.createEntityManager();
//Obtain transaction
EntityTransaction transaction = entityManager.getTransaction();
//Initialize transaction
transaction.begin();
Role role = (Role) bo;
//First merge the role, and obtain the generated guid
role = entityManager.merge(role);

//At this point the groups are empty with only the primary key
// populated, so I load them using getReferece
Set<com.cqi.tiburon.bo.GroupBO> groups = role.getGroups();

for (com.cqi.tiburon.bo.GroupBO group : groups) {
com.cqi.tiburon.bo.GroupBO loadedGroup = entityManager.getReference(com.cqi.tiburon.bo.GroupBO.class,
                        group.getGuid());
                loadedGroup.getRoles().add(role);
}

transaction.commit();
entityManager.close();


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.