Я нахожусь в процессе модульного тестирования DAO, созданной с использованием Spring / JPA и Hibernate в качестве поставщика.
Перед запуском теста DBUnit вставил запись пользователя с именем пользователя "poweruser" - имя пользователяпервичный ключ в таблице пользователей.Вот метод интеграционного теста:
@Test
@ExpectedException(EntityExistsException.class)
public void save_UserTestDataSaveUserWithPreExistingId_EntityExistsException() {
User newUser = new UserImpl("poweruser");
newUser.setEmail("kuser@null.com");
newUser.setFirstName("New");
newUser.setLastName("User");
newUser.setPassword("secret");
dao.persist(newUser);
}
Я проверил, что запись находится в базе данных в начале этого метода.Не уверен, что это уместно, но если я сделаю dao.flush()
в конце этого метода, я получу следующее исключение:
javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException:
Could not execute JDBC batch update