-->
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: Exception: Found two representations of same collection
PostPosted: Sat Aug 21, 2004 12:28 pm 
Newbie

Joined: Fri Aug 20, 2004 11:48 am
Posts: 7
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="com.mobileserver.Player" table="player">
<id name="playerID" column="playerid" type="long" length="12">
<generator class="increment"/>
</id>
<property name="name" column="name" type="string" length="30" not-null="true"/>
<property name="phoneNo" column="phoneno" type="string" length="12" not-null="true"/>
<property name="type" column="type" type="string" length="1" not-null="true"/>
<property name="joinDate" column="joindate" type="timestamp" length="19" not-null="true"/>
<property name="password" column="password" type="string" length="15" not-null="true"/>

<many-to-one name="operator" class="com.mobileserver.Operator" not-null="true">
<column name="operatorid" />
</many-to-one>

<set cascade="all-delete-orphan" inverse="true" lazy="true" name="candidateSet" table="candidate">
<key column="playerID"/>
<one-to-many class="com.mobileserver.Candidate"/>
</set>
</class>
</hibernate-mapping>

.23:53:31,170 INFO Environment:462 - Hibernate 2.1.4
23:53:31,200 INFO Environment:496 - loaded properties from resource hibernate.properties: {hibernate.connection.username=mmgame, hibernate.connection.password=, hibernate.cglib.use_reflection_optimizer=false, hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect, hibernate.connection.url=jdbc:mysql://localhost:3306/mmgame, hibernate.connection.driver_class=org.gjt.mm.mysql.Driver}
23:53:31,240 INFO Configuration:872 - configuring from resource: /hibernate.cfg.xml
23:53:31,240 INFO Configuration:844 - Configuration resource: /hibernate.cfg.xml
23:53:32,432 INFO Configuration:328 - Mapping resource: Operator.hbm.xml
23:53:32,813 INFO Binder:229 - Mapping class: com.mobileserver.Operator -> operator
23:53:33,173 INFO Configuration:328 - Mapping resource: Candidate.hbm.xml
23:53:33,263 INFO Binder:229 - Mapping class: com.mobileserver.Candidate -> candidate
23:53:33,313 INFO Configuration:328 - Mapping resource: Player.hbm.xml
23:53:33,434 INFO Binder:229 - Mapping class: com.mobileserver.Player -> player
23:53:33,444 INFO Configuration:328 - Mapping resource: GamePlay.hbm.xml
23:53:33,544 INFO Binder:229 - Mapping class: com.mobileserver.GamePlay -> gameplay
23:53:33,574 INFO Configuration:328 - Mapping resource: Groups.hbm.xml
23:53:33,674 INFO Binder:229 - Mapping class: com.mobileserver.Groups -> groups
23:53:33,674 INFO Configuration:328 - Mapping resource: InitState.hbm.xml
23:53:33,774 INFO Binder:229 - Mapping class: com.mobileserver.InitState -> initstate
23:53:33,774 INFO Configuration:328 - Mapping resource: Level.hbm.xml
23:53:33,834 INFO Binder:229 - Mapping class: com.mobileserver.Level -> level
23:53:33,834 INFO Configuration:328 - Mapping resource: CandidateType.hbm.xml
23:53:33,934 INFO Binder:229 - Mapping class: com.mobileserver.CandidateType -> candidatetype
23:53:33,944 INFO Configuration:1030 - Configured SessionFactory: null
23:53:33,944 INFO Configuration:613 - processing one-to-many association mappings
23:53:33,944 INFO Binder:1168 - Mapping collection: com.mobileserver.Operator.playerSet -> player
23:53:33,944 INFO Binder:1168 - Mapping collection: com.mobileserver.Candidate.gamePlaySet -> gameplay
23:53:33,954 INFO Binder:1168 - Mapping collection: com.mobileserver.Player.candidateSet -> candidate
23:53:33,984 INFO Binder:1168 - Mapping collection: com.mobileserver.Groups.gamePlaySet -> gameplay
23:53:33,984 INFO Binder:1168 - Mapping collection: com.mobileserver.InitState.groupsSet -> groups
23:53:33,984 INFO Binder:1168 - Mapping collection: com.mobileserver.Level.groupsSet -> groups
23:53:33,984 INFO Binder:1168 - Mapping collection: com.mobileserver.Level.candidateSet -> candidate
23:53:33,984 INFO Binder:1168 - Mapping collection: com.mobileserver.Level.gamePlaySet -> gameplay
23:53:33,984 INFO Binder:1168 - Mapping collection: com.mobileserver.Level.initStateSet -> initstate
23:53:33,984 INFO Binder:1168 - Mapping collection: com.mobileserver.CandidateType.candidateSet -> candidate
23:53:33,994 INFO Configuration:622 - processing one-to-one association property references
23:53:33,994 INFO Configuration:647 - processing foreign key constraints
23:53:34,105 INFO Dialect:82 - Using dialect: net.sf.hibernate.dialect.MySQLDialect
23:53:34,115 INFO SettingsFactory:62 - Use outer join fetching: true
23:53:34,135 INFO DriverManagerConnectionProvider:42 - Using Hibernate built-in connection pool (not for production use!)
23:53:34,145 INFO DriverManagerConnectionProvider:43 - Hibernate connection pool size: 5
23:53:34,145 INFO DriverManagerConnectionProvider:77 - using driver: org.gjt.mm.mysql.Driver at URL: jdbc:mysql://localhost:3306/mmgame
23:53:34,145 INFO DriverManagerConnectionProvider:78 - connection properties: {user=mmgame, password=}
23:53:34,165 INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of process level read-write cache is not recommended)
23:53:34,265 INFO SettingsFactory:102 - Use scrollable result sets: true
23:53:34,265 INFO SettingsFactory:105 - Use JDBC3 getGeneratedKeys(): true
23:53:34,265 INFO SettingsFactory:108 - Optimize cache for minimal puts: false
23:53:34,265 INFO SettingsFactory:117 - Query language substitutions: {}
23:53:34,265 INFO SettingsFactory:128 - cache provider: net.sf.ehcache.hibernate.Provider
23:53:34,275 INFO Configuration:1093 - instantiating and configuring caches
23:53:34,705 INFO SessionFactoryImpl:119 - building session factory
23:53:36,077 INFO SessionFactoryObjectFactory:82 - no JNDI name configured
.testStartGame
E.testEndGame
E
Time: 8.042
There were 2 errors:
1) testStartGame(com.mobileserver.PlayerTest)net.sf.hibernate.HibernateException: Found two representations of same collection
at net.sf.hibernate.impl.SessionImpl.updateReachableCollection(SessionImpl.java:2866)
at net.sf.hibernate.impl.FlushVisitor.processCollection(FlushVisitor.java:32)
at net.sf.hibernate.impl.AbstractVisitor.processValue(AbstractVisitor.java:69)
at net.sf.hibernate.impl.AbstractVisitor.processValues(AbstractVisitor.java:36)
at net.sf.hibernate.impl.SessionImpl.flushEntity(SessionImpl.java:2588)
at net.sf.hibernate.impl.SessionImpl.flushEntities(SessionImpl.java:2454)
at net.sf.hibernate.impl.SessionImpl.flushEverything(SessionImpl.java:2256)
at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2235)
at net.sf.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:61)
at com.mobileserver.PlayerTest.testStartGame(PlayerTest.java:162)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at com.mobileserver.PlayerTest.main(PlayerTest.java:147)
2) testEndGame(com.mobileserver.PlayerTest)net.sf.hibernate.HibernateException: Found two representations of same collection
at net.sf.hibernate.impl.SessionImpl.updateReachableCollection(SessionImpl.java:2866)
at net.sf.hibernate.impl.FlushVisitor.processCollection(FlushVisitor.java:32)
at net.sf.hibernate.impl.AbstractVisitor.processValue(AbstractVisitor.java:69)
at net.sf.hibernate.impl.AbstractVisitor.processValues(AbstractVisitor.java:36)
at net.sf.hibernate.impl.SessionImpl.flushEntity(SessionImpl.java:2588)
at net.sf.hibernate.impl.SessionImpl.flushEntities(SessionImpl.java:2454)
at net.sf.hibernate.impl.SessionImpl.flushEverything(SessionImpl.java:2256)
at net.sf.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1801)
at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1567)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1532)
at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:39)
at com.mobileserver.PlayerTest.testEndGame(PlayerTest.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at com.mobileserver.PlayerTest.main(PlayerTest.java:147)

FAILURES!!!
Tests run: 3, Failures: 0, Errors: 2

Dear All,

I use MySQL4.0 and Hibernate to development a Mobile Game Platform. However while I try to update my data by this method "session.update(candidate)", it throws a Exception "Found two representations of same collection".

There mapping relationship like the following.

Player ---- Candidate One to Many
Candidate --------- GamePlay One to Many
GamePlay --------- Group Many to One
Group ------------- Level Many to One
Level -------------- Candidate One to Many

I think the problem is caused by the cycle relationship.
Candidate --- GamePlay --- Group --- Level --- Candidate

I am appreciate if you can give me some suggestion.

Thank you!


Top
 Profile  
 
 Post subject:
PostPosted: Mon Aug 23, 2004 10:41 am 
Expert
Expert

Joined: Fri Feb 06, 2004 7:49 am
Posts: 255
Location: Moscow, Russia
Please, use Hibernate 2.1.6, it should show the name of the collection. There was a change request http://opensource.atlassian.com/projects/hibernate/browse/HB-1079

I have not yet used, but read in the forum, Gavin suggested to use session.saveOrUpdateCopy(Object object) for NonUniqueObjectException, try this for "Found two representations of same collection".

I don't know if my solution is correct, but I solved the same problem (before I had known about saveOrUpdateCopy) with breaking cascade save/update (cascade="none"), for example let Level --- Candidate relationship will not be cascaded:
Code:
session.saveOrUpdate(candidate);
session.flush();
session.clear(); // clear the session to avoid "Found two representations of same collection"
session.saveOrUpdate(candidate.gamePlay.group.level.candiate);
session.flush();

It helped me.

_________________
Leonid Shlyapnikov


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.