[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-3332) Hibernate duplicate then child entity's on merge

Mike Ressler (JIRA) noreply at atlassian.com
Sat Aug 29 16:07:15 EDT 2009


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-3332?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=33870#action_33870 ] 

Mike Ressler commented on HHH-3332:
-----------------------------------

I ran into this using version 3.3.1.  

The workaround I'm using at the moment is to add the child to the beginning of the list.  So the code in the example would be:

        Child c = new Child();
        c.setFather(f);
        f.getChildList().add(0, c); 

This is working for me at the moment.  I'm surprised this bug has been open for so long.

> Hibernate duplicate then child entity's on merge
> ------------------------------------------------
>
>                 Key: HHH-3332
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3332
>             Project: Hibernate Core
>          Issue Type: Bug
>    Affects Versions: 3.2.6
>         Environment: JDK 1.6
> Oracle 9i
> Hibernate 3.2.6
> Hibernate Annotations 3.3.1
> Hibernate EntityManager 3.3.2
> Standalone Running
>            Reporter: Rodrigo de Assumpção
>            Priority: Critical
>         Attachments: ExampleBug.zip
>
>
> The method merge from EntityManager causes a duplication of child entity's.
> class Father:
>     @OneToMany(mappedBy = "father", cascade={CascadeType.ALL}, fetch=FetchType.LAZY) 
>     private List<Child> childList;
> class Child:
>     @ManyToOne  @JoinColumn(name = "ID_FATHER")
>     private Father father;
> class BugTest
>         EntityManagerFactory emf = Persistence.createEntityManagerFactory("JpaTestHB");
>         EntityManager em = emf.createEntityManager();
>         
>         Father f = (Father) em.createQuery("SELECT f FROM Father f  WHERE f.id = 1").getSingleResult();
>         
>         Child c = new Child();
>         c.setFather(f);
>         f.getChildList().add(c);
>         
>         em.getTransaction().begin();
>         em.merge(f);
>         em.getTransaction().commit();
> The execution of BugTest Class causes tow insert's on table "child".
> If you change the fetch mode to EAGER (into Father class) the problem not occurs.
> I make the same test with Toplink, and it make a unique insert, normal.

-- 
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