11package com .baeldung .jpa .removal ;
22
33import org .junit .Assert ;
4- import org .junit .BeforeClass ;
4+ import org .junit .Before ;
55import org .junit .Test ;
66
77import javax .persistence .EntityManager ;
88import javax .persistence .EntityManagerFactory ;
99import javax .persistence .Persistence ;
10+ import javax .persistence .PersistenceException ;
1011import javax .persistence .TypedQuery ;
1112import javax .persistence .criteria .CriteriaBuilder ;
1213import 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