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

Trond Isaksen (JIRA) noreply at atlassian.com
Wed May 19 04:09:11 EDT 2010


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

Trond Isaksen commented on HHH-3332:
------------------------------------

Yes, we are just using regular List one-to-many/many-to-one-relations with cascade merge both ways. If a merge-call is done on the parent, everything works fine. If a merge is called on the child, the merge is cascaded to the parent and then back to the child again, which creates one extra insert.
I've also tried with the latest (3.5.2?) version, which has the same problem. 

> 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
>            Assignee: Gail Badner
>            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