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
来调用另一个验证器,但它只被create
和save
方法调用。
是否也可以使用此验证器来验证 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(转)