Skip to content

Commit bc501e3

Browse files
committed
BAEL-4643: JPA CascadeType.REMOVE vs orphanRemoval
* Adds a test to OrphanRemovalIntegrationTest that expects a PersistenceException
1 parent 3139be9 commit bc501e3

2 files changed

Lines changed: 20 additions & 3 deletions

File tree

persistence-modules/java-jpa-3/src/main/java/com/baeldung/jpa/removal/OrderRequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ public void removeLineItem(LineItem lineItem) {
3434
lineItems.remove(lineItem);
3535
}
3636

37+
public void setLineItems(List<LineItem> lineItems) {
38+
this.lineItems = lineItems;
39+
}
40+
3741
protected OrderRequest() {
3842
}
3943
}

persistence-modules/java-jpa-3/src/test/java/com/baeldung/jpa/removal/OrphanRemovalIntegrationTest.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.baeldung.jpa.removal;
22

33
import org.junit.Assert;
4-
import org.junit.BeforeClass;
4+
import org.junit.Before;
55
import org.junit.Test;
66

77
import javax.persistence.EntityManager;
88
import javax.persistence.EntityManagerFactory;
99
import javax.persistence.Persistence;
10+
import javax.persistence.PersistenceException;
1011
import javax.persistence.TypedQuery;
1112
import javax.persistence.criteria.CriteriaBuilder;
1213
import javax.persistence.criteria.CriteriaQuery;
@@ -19,8 +20,8 @@ public class OrphanRemovalIntegrationTest {
1920
private static EntityManagerFactory factory;
2021
private static EntityManager entityManager;
2122

22-
@BeforeClass
23-
public static void setup() {
23+
@Before
24+
public void setup() {
2425
factory = Persistence.createEntityManagerFactory("jpa-h2-removal");
2526
entityManager = factory.createEntityManager();
2627
}
@@ -41,6 +42,18 @@ public void whenLineItemIsRemovedFromOrderRequest_thenDeleteOrphanedLineItem() {
4142
Assert.assertEquals(2, findAllLineItem().size());
4243
}
4344

45+
@Test(expected = PersistenceException.class)
46+
public void whenLineItemsIsReassigned_thenThrowAnException() {
47+
createOrderRequestWithLineItems();
48+
49+
OrderRequest orderRequest = entityManager.find(OrderRequest.class, 1L);
50+
orderRequest.setLineItems(new ArrayList<>());
51+
52+
entityManager.getTransaction().begin();
53+
entityManager.merge(orderRequest);
54+
entityManager.getTransaction().commit();
55+
}
56+
4457
private void createOrderRequestWithLineItems() {
4558
List<LineItem> lineItems = new ArrayList<>();
4659
lineItems.add(new LineItem("line item 1"));

0 commit comments

Comments
 (0)