我目前正在用Spring开发一个应用程序,使用Hibernate作为ORM。我知道,默认情况下,Hibernate在持久化或加载实体时都会使用JSR-303 Bean验证。由于此应用程序支持草稿(我希望在持久化后执行验证),因此必须将其添加到persistence.xml中:
<validation-mode>NONE</validation-mode>
@RequestMapping(value = "/entity/{entity_id}", method = RequestMethod.POST)
public String completeEntity(@PathVariable("entity_id") Long entity_id)
{
//myEntityService was autowired in the controller
MyEntity myEntity = myEntityService.findById(entity_id);
//Here comes the bean validation
DataBinder binder = new DataBinder(myEntity);
//validator was also autowired
binder.setValidator(validator);
binder.validate();
BindingResult result = binder.getBindingResult();
if (result.hasErrors()) {
//handleErrors
}
//continue doing stuff, marking the entity as 'not draft' and persisting it...
}
模型实体代码:
@Entity
@Table(name = "myEntity")
public class MyEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
String foo;
// bi-directional one-to-many association to Bar
//Note the valid annotation, as i want all related Bar's to be validated
//when a MyEntity is validated
@Valid
@OneToMany(mappedBy = "myEntity")
private List<Bar> bars;
//Getters and Setters...
}
@Entity
@Table(name = "bar")
public class Bar{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
String barFoo;
// bi-directional many-to-one association to MyEntity
@ManyToOne
private MyEntity myEntity;
//Getters and Setters...
}
我想知道如何传播bean验证,以便每当MyEntity实例被验证时,所有相关联的bar也被验证,而不必在验证之前强制加载这些实体。
您可以实现一个自定义的可遍历解析器,并配置Bean验证来使用这个解析器。
默认实现确保没有从数据库加载对象(假设它们在上次写入时已经成功验证),但您可以根据需求重写特定关联。
我缺少一些真正基本的东西(与EAR或EAR配置中的类加载相关)。我不明白,为什么我的JSR303验证和Hibernate验证不是从EAR内部触发的...如果我创建一个新的战争项目,它就会触发。 我正在Weblogic Server10.3上用Maven、JSF2.0、Open-JPA、EJB3.0建立一个新项目。我使用maven原型创建了所有项目。我有一个最终的EAR构建,它的结构如下: 项目名称
我正在使用spring(4.2.0.RELEASE)、hibernate validator(5.2.1.Final)和validation api(1.1.0.Final)对后端应用程序进行JSR验证,配置如下:, 但是没有一个JSR303注释在我的应用程序中工作。 注意:在POJO类上添加了JSR303注释,在服务类(使用POJO)上添加了@Validated注释,还尝试在方法级别添加@Val
null 问题是: 当添加以下依赖项以实现“Spring Webflux+SpringFox+JSR303”时, 我得到以下错误, 另外,如果当前不支持JSR303,那么除了JSR303之外,还可以使用哪些其他验证注释?我不想使用Swagger核心注释,只是因为它会扰乱代码的可读性。
我按照这个教程https://spring framework . guru/spring-boot-restful-API-documentation-with-swagger-2/生成了一个swagger文档。它可以工作,但是当我试图在bean中添加一些验证时,我在文档中找不到信息: 带有验证注释的我的实体: 这里,https://github.com/springfox/springfox/
问题内容: 问题已经解决了这里,但没有工作,我(不相同的弹簧引导版本我猜)本 尝试编写自定义约束验证器代码,以在保留之前检查帐户电子邮件是否存在。 // ------------------------------------------------ -------------------------- // --------------------------------------------
问题已经在这里解决了,但对我不起作用(我猜不是同一个Spring启动版本) 尝试编写自定义约束验证器,在持久化之前检查帐户电子邮件是否存在。 // -------------------------------------------------------------------------- // ------------------------------------------------
你能帮帮我吗? 致以最诚挚的问候
你能提供一个链接到这些问题的解释(或者告诉我我做错了什么?)。我想我在谷歌搜索它失败了,因为互联网上充斥着关键词JSF和验证,对不起。