Я очень удивлен уникальной функцией ограничения. Я разрабатываю приложение для весенней загрузки с базой данных H2 для модульного тестирования.
Одна из моих сущностей имеет уникальное ограничение. Под заголовками класса User.
@Entity
@Table(name = "user", uniqueConstraints = { @UniqueConstraint(columnNames = { "identifier" }) })
@SequenceGenerator(name = "user_pkey", sequenceName = "user_id_seq")
Я написал небольшой модульный тест, чтобы проверить уникальное ограничение.
Перед тестовой функцией
@Before
public void before() {
User user1 = new User();
user1.setBlackListed(false);
user1.setIdentifier("[email protected]");
user1.setRefreshToken("azerty");
this.userDao.save(user1);
}
Мой тест
@Test(expected = DataIntegrityViolationException.class)
public void user_identifierUnicityTest() {
User user4 = new User();
user4.setBlackListed(false);
user4.setIdentifier("[email protected]");
user4.setRefreshToken("azerty4");
User response = this.userDao.save(user4);
this.userDao.findByIdentifier("[email protected]");
}
Я был очень удивлен, я думал, что исключение будет выдано во время запроса на сохранение. Или исключение выбрасывается во время запроса на поиск.
Целостность ограничения проверяется во время запроса выбора, а не вставки. Я не понимаю результата.
Это нормальное поведение ограничения уникальности?
Спасибо за ответы :)