java - 我应该在哪里处理数据库查询以使用 spring data jpa 进行验证?
问题描述
我最近一直在使用带有 spring-data-jpa 的 spring boot 开发一个 API。我一直在使用带有休眠验证器的 jsr303 注释来验证我的 API 请求中的 dto,然后再将它们映射到 JPA 实体。
我还在我的 JPA 实体上使用相同的休眠验证器注释来验证将实体传递到 spring data jpa 存储库以保存它时。
这些验证中的大多数使用 spring data jpa 存储库来验证传入的值是否在数据库中的特定列表中。但是最近有人告诉我,不支持在 jpa 生命周期(验证)期间使用 EntityManager,并且遇到了错误,请参阅:Hibernate validator cause many to many relationship to not save
我收到反馈说使用这些注释来验证持久层中的实体是一个“奇怪”的想法。我的问题是,我应该在哪里验证我的实体?正如我所说,我在休息 API 层进行了验证,但我不想只是假设我在与休息层无关的代码中正确构建了一个实体。
我要尝试的一种选择是在实体上使用 JSR 注释,但在我的服务层方法中使用 @Valid 验证它们。问题是 EntityManager 无论如何都会尝试验证这些注释,我似乎无法找到一种方法让它忽略它们。
当 jsr303 注释运行良好时,我真的不想手动实现我的所有验证......
解决方案
推荐阅读
- python - 如何将这两个数据框连接在一起以使它们重叠并适合日期?
- eclipse - Eclipse 不显示为 RestAssured 项目导入包的建议。如何解决这个问题?
- r - 格式化 R Markdown 输出,以便可以将其复制并粘贴到 twitter
- sql - 添加小时到日期以实现下一个 6:00
- html - 这是铬错误吗?
- python - 关于用networkx画图的问题
- python - 识别灰色图片中的白色晶体并为它们创建二进制掩码
- php - Guzzle pool:重构匿名函数后如何获取池响应
- rust - 如何制作 Rc 的右值链接
> 工作? - python - 将 json 文件保存在 s3 存储桶中时出现错误 No such file