Skip to content

Commit 57f4802

Browse files
committed
test cases for HHH-14416
1 parent e820e4c commit 57f4802

File tree

2 files changed

+164
-0
lines changed

2 files changed

+164
-0
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package org.hibernate.event;
2+
3+
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
4+
import org.junit.Test;
5+
6+
import javax.persistence.*;
7+
8+
import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
9+
10+
public class ReSaveReferencedDeletedEntity extends BaseCoreFunctionalTestCase {
11+
@Override
12+
protected Class<?>[] getAnnotatedClasses() {
13+
return new Class<?>[] { Child.class, Parent.class };
14+
}
15+
16+
@Test
17+
public void testReSaveDeletedEntityWithReferences() {
18+
doInHibernate( this::sessionFactory, session -> {
19+
Parent parent = new Parent();
20+
21+
Child child = new Child();
22+
parent.setChild( child );
23+
24+
session.saveOrUpdate( parent );
25+
session.saveOrUpdate( child );
26+
27+
session.remove(child);
28+
29+
session.save(child);
30+
} );
31+
}
32+
33+
@Test
34+
public void testReSaveDeletedEntityWithReferences2() {
35+
doInHibernate( this::sessionFactory, session -> {
36+
Parent parent = new Parent();
37+
38+
Child child = new Child();
39+
parent.setChild( child );
40+
41+
session.saveOrUpdate( parent );
42+
session.saveOrUpdate( child );
43+
44+
session.remove(child);
45+
46+
session.detach(child);
47+
48+
session.save(child);
49+
} );
50+
}
51+
52+
@Entity(name = "Child")
53+
public static class Child {
54+
@Id
55+
@GeneratedValue(strategy = GenerationType.IDENTITY)
56+
private Integer id;
57+
58+
public Integer getId() {
59+
return id;
60+
}
61+
62+
public void setId(Integer id) {
63+
this.id = id;
64+
}
65+
}
66+
67+
@Entity(name = "Parent")
68+
public static class Parent {
69+
@Id
70+
@GeneratedValue(strategy = GenerationType.IDENTITY)
71+
private Integer id;
72+
73+
@OneToOne(cascade = CascadeType.ALL)
74+
private Child child;
75+
76+
public Integer getId() {
77+
return id;
78+
}
79+
80+
public void setId(Integer id) {
81+
this.id = id;
82+
}
83+
84+
public Child getChild() {
85+
return child;
86+
}
87+
88+
public void setChild(Child child) {
89+
this.child = child;
90+
}
91+
}
92+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package org.hibernate.event;
2+
3+
import org.hibernate.Session;
4+
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
5+
import org.junit.Test;
6+
7+
import javax.persistence.*;
8+
9+
public class ReSaveReferencedDeletedEntityJPA extends BaseEntityManagerFunctionalTestCase {
10+
@Override
11+
protected Class<?>[] getAnnotatedClasses() {
12+
return new Class<?>[] { Child.class, Parent.class };
13+
}
14+
15+
@Test
16+
public void testReSaveDeletedEntityWithReferencesJPA() {
17+
EntityManager em = getOrCreateEntityManager();
18+
em.getTransaction().begin();
19+
20+
Parent parent = new Parent();
21+
parent.setId(1);
22+
23+
Child child = new Child();
24+
child.setId(2);
25+
parent.setChild( child );
26+
27+
em.persist( parent );
28+
29+
em.remove( child );
30+
31+
em.unwrap(Session.class).save( child );
32+
}
33+
34+
@Entity(name = "Child")
35+
public static class Child {
36+
@Id
37+
private Integer id;
38+
39+
public Integer getId() {
40+
return id;
41+
}
42+
43+
public void setId(Integer id) {
44+
this.id = id;
45+
}
46+
}
47+
48+
@Entity(name = "Parent")
49+
public static class Parent {
50+
@Id
51+
private Integer id;
52+
53+
@OneToOne(cascade = CascadeType.ALL)
54+
private Child child;
55+
56+
public Integer getId() {
57+
return id;
58+
}
59+
60+
public void setId(Integer id) {
61+
this.id = id;
62+
}
63+
64+
public Child getChild() {
65+
return child;
66+
}
67+
68+
public void setChild(Child child) {
69+
this.child = child;
70+
}
71+
}
72+
}

0 commit comments

Comments
 (0)