小编j17*_*704的帖子

Spring Boot Starter Data JPA的唯一约束检查​​失败太晚了

我对这个独特的约束功能感到非常惊讶.我正在使用H2数据库开发一个弹簧启动应用程序进行单元测试.

我的一个实体有一个独特的约束.在User类的标题下面.

@Entity
@Table(name = "user", uniqueConstraints = { @UniqueConstraint(columnNames = { "identifier" }) })
@SequenceGenerator(name = "user_pkey", sequenceName = "user_id_seq")
Run Code Online (Sandbox Code Playgroud)

我写了一个小单元测试来检查唯一约束.

测试前功能

@Before
public void before() {
        User user1 = new User();
        user1.setBlackListed(false);
        user1.setIdentifier("test@tby.com");
        user1.setRefreshToken("azerty");          
        this.userDao.save(user1);
}
Run Code Online (Sandbox Code Playgroud)

我的考试

@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");
}
Run Code Online (Sandbox Code Playgroud)

我很惊讶,我认为在保存请求期间会抛出异常.或者在查找请求期间抛出异常.

在选择请求期间检查约束完整性而不是插入.我不明白结果.

这是唯一约束的正常行为吗?

谢谢你的回答:)

hibernate h2 unique-constraint spring-data spring-boot

1
推荐指数
1
解决办法
1012
查看次数