BAEL-4723 Defining Indexes in JPA (#10247)

* BAEL-4723 Defining Indexes in JPA

* unit -> integration test

Co-authored-by: mateusz.szablak <mateusz.szablak@accenture.com>
This commit is contained in:
Mateusz Szablak
2020-11-13 19:25:15 +01:00
committed by GitHub
parent 7881b8e9c2
commit 9bce552d6d
4 changed files with 136 additions and 1 deletions
@@ -0,0 +1,50 @@
package com.baeldung.jpa.index;
import org.hibernate.exception.ConstraintViolationException;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import java.util.Optional;
public class IndexIntegrationTest {
private static EntityManagerFactory factory;
private static EntityManager entityManager;
@BeforeClass
public static void setup() {
factory = Persistence.createEntityManagerFactory("jpa-index");
entityManager = factory.createEntityManager();
}
@Test
public void givenStudent_whenPersistStudentWithSameFirstName_thenConstraintViolationException() {
Student student = new Student();
student.setFirstName("FirstName");
student.setLastName("LastName");
Student student2 = new Student();
student2.setFirstName("FirstName");
student2.setLastName("LastName2");
entityManager.getTransaction().begin();
entityManager.persist(student);
entityManager.getTransaction().commit();
Assert.assertEquals(1L, (long) student.getId());
entityManager.getTransaction().begin();
try {
entityManager.persist(student2);
entityManager.getTransaction().commit();
Assert.fail("Should raise an exception - unique key violation");
} catch (Exception ex) {
Assert.assertTrue(Optional.of(ex).map(Throwable::getCause).map(Throwable::getCause).filter(x -> x instanceof ConstraintViolationException).isPresent());
} finally {
entityManager.getTransaction().rollback();
}
}
}