【发布时间】:2018-06-11 15:06:22
【问题描述】:
我对独特的约束功能感到非常惊讶。我正在开发一个带有 H2 数据库的 Spring Boot 应用程序以进行单元测试。
我的一个实体有一个独特的约束。 在 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("test@tby.com");
user1.setRefreshToken("azerty");
this.userDao.save(user1);
}
我的测试
@Test(expected = DataIntegrityViolationException.class)
public void user_identifierUnicityTest() {
User user4 = new User();
user4.setBlackListed(false);
user4.setIdentifier("test@tby.com");
user4.setRefreshToken("azerty4");
User response = this.userDao.save(user4);
this.userDao.findByIdentifier("test@tby.com");
}
我很惊讶,我认为在保存请求期间会抛出异常。或者在查找请求过程中抛出异常。
在选择请求期间检查约束完整性,而不是在插入期间检查。结果看不懂。
这是唯一约束的正常行为吗?
感谢您的回答:)
【问题讨论】:
标签: hibernate spring-boot spring-data h2 unique-constraint