[hibernate-issues] [Hibernate-JIRA] Created: (HHH-4468) Exception when using hibernate as JPA provider: "Found two representations of same collection"

Håvard Nesvold (JIRA) noreply at atlassian.com
Wed Sep 30 12:28:50 EDT 2009


Exception when using hibernate as JPA provider: "Found two representations of same collection"
----------------------------------------------------------------------------------------------

                 Key: HHH-4468
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4468
             Project: Hibernate Core
          Issue Type: Bug
          Components: entity-manager
    Affects Versions: 3.3.2
         Environment: 3.3.2.GA
            Reporter: Håvard Nesvold


I have a J2SE application where I use JPA with Hibernate as persistence provider. The versions of the required hibernate jars that I use are:
hibernate3.jar (3.3.2.GA)
hibernate-annotations.jar (3.4.0.GA)
hibernate-commons-annotations.jar (3.1.0.GA)
hibernate-entitymanager.jar (3.4.0.GA)

I have an entity where i have a bidirectional One-To-Many mapping. This is initialized to an empty list, something that clearly is allowed according to the JPA 1.0 spec.

i.e. I have:

in class Parent:

@OneToMany(mappedBy="parent", cascade = CascadeType.ALL)
private List<Child> children = ArrayList<Child>();

class Child:

@ManyToOne
@JoinColumn(name="PARENT_ID")
private Parent parent;


A certain sequence of actions result in a HibernateException being thrown (wrapped by JPA in a RollbackException):

    * Obtain a new EntityManager
    * Begin a transaction
    * Fetch a Parent entity from the entity manager (this exists in the db), call this e.
    * Apply an EntityManager.remove() on e
    * Commit the transaction
    * Begin a transaction
    * Apply an EntityManager.persist() on e
    * Commit the transaction


The exception is thrown on the last commit():
Code:
Caused by: org.hibernate.HibernateException: Found two representations of same collection: Parent.children
    at org.hibernate.engine.Collections.processReachableCollection(Collections.java:176)
    at org.hibernate.event.def.FlushVisitor.processCollection(FlushVisitor.java:60)
    at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:124)
    ...


I have tried to flush(), clear(), and pretty much everything on the entity manager (event fetching the Hibernate Sesssion and clearing this) - the only thing that helps is creating a new one before attempting the last transaction.
Moreover, after some investigation, the persisted entity actually seems to be persisted correctly - despite the exception (this also seems to hold true for any cascaded persists), perhaps the only erroneous thing here is the fact that an exception is thrown when it really should not?



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the hibernate-issues mailing list