加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – Spring JPA不会在更新时验证bean

发布时间:2020-12-15 01:46:54 所属栏目:大数据 来源:网络整理
导读:我正在使用Spring Boot 1.5.7,Spring JPA,Hibernate验证,Spring Data REST,Spring HATEOAS. 我有一个像这样的简单bean: @Entitypublic class Person { @Id @GeneratedValue private Long id; @NotBlank private String name;} 如你所见,我正在使用@NotBlank

我正在使用Spring Boot 1.5.7,Spring JPA,Hibernate验证,Spring Data REST,Spring HATEOAS.

我有一个像这样的简单bean:

@Entity
public class Person {
    @Id
    @GeneratedValue
    private Long id;

    @NotBlank
    private String name;
}

如你所见,我正在使用@NotBlank.根据Hibernate文档,验证应该在pre-persist和pre-update上进行.

我创建了一个junit测试:

@Test(expected = ConstraintViolationException.class)
public void saveWithEmptyNameThrowsException() {  
    Person person = new Person();
    person.setName("");
    personRepository.save(person);
}

此测试工作正常,因此验证过程正确.相反,在此测试用例中,验证不起作用:

@Test(expected = ConstraintViolationException.class)
public void saveWithEmptyNameThrowsException() {
   Person person = new Person();
   person.setName("Name");
   personRepository.save(person);

   person.setName("");
   personRepository.save(person);
}

我发现了另一个similar question,但遗憾的是没有任何回复.
为什么不在update()方法上进行验证?建议解决问题?

最佳答案
我认为没有发生ConstraintViolationException,因为在更新期间Hibernate不会在现场将结果刷新到数据库.尝试使用saveAndFlush()替换测试save().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读