Spring Boot REST·@Constraint 删除?

Posted

技术标签:

【中文标题】Spring Boot REST·@Constraint 删除?【英文标题】:Spring Boot REST · @Constraint for delete? 【发布时间】:2018-09-22 23:21:49 【问题描述】:

我正在开发一个使用 Spring Boot、REST、HATEOAS、Hibernate 和 PostgreSQL 的系统后端。为了验证,我开始使用 extend org.springframework.validation.Validator 的类。它运行良好,但仅适用于前端的调用。对于在后端进行的调用,例如使用EntityManager,它们不会触发。在这种情况下,我设法通过为ElementType.TYPE 使用@Constraint 来调用另一个验证器,但它只被createsave 方法调用。

是否也可以使用此验证器来验证 delete 方法?有一个项目 here 是我正在处理的项目的非操作子集,其中包含我提到的验证器。

提前致谢。

P.S.:每当我在后端调用存储库方法时,我宁愿避免手动调用验证器。

P.P.S.: This 的回答让我相信这是可能的,但我无法将 XML 配置转换为 JavaConfig。

【问题讨论】:

【参考方案1】:

我终于找到了答案。在application.properties,添加:

spring.jpa.properties.javax.persistence.validation.group.pre-remove=javax.validation.groups.Default

链接的问题告诉我需要哪个属性,但我不知道该放在哪里。我尝试使用自定义 Java 配置甚至 persistence.xml 配置,但其他几件事都失败了。

Here,我了解到“[...] 在创建本地 EntityManagerFactory 时,spring.jpa.properties.* 中的所有属性都作为普通 JPA 属性(去除前缀)传递。”所以我只是添加了那个前缀并且它起作用了。

【讨论】:

我按照你的回答,验证成功。但它给了我一个错误 500,而不是 400。 错误 500 表示在运行 Spring 的应用程序中发生了未经处理的错误,例如未经处理的异常。可以是任何东西。

以上是关于Spring Boot REST·@Constraint 删除?的主要内容,如果未能解决你的问题,请参考以下文章

列出所有已部署的 REST 端点(spring-boot、tomcat)

初入spring boot(八 )Spring Data REST

Spring Boot测试中使用REST Assured(转)

spring boot开发REST接口

Spring Boot 2 Rest Api Example

如何在 Spring(Boot)中装饰 REST 响应?