我应该在哪里处理数据库查询以使用Spring Data JPA进行验证?

时间:2019-03-07 16:50:23

标签: java spring spring-data-jpa

我最近一直在使用带有spring-data-jpa的spring boot来开发API。我一直在使用带有休眠验证器的jsr303批注,以在将它们映射到JPA实体之前在API请求中验证我的dto。

我还在JPA实体上使用相同的休眠验证器注释,以在将该实体传递到spring数据jpa存储库以进行验证时进行验证。

大多数验证使用spring data jpa存储库来验证诸如所传递的值是否在数据库的特定列表中之类的内容。但是最近我被告知,不支持在jpa生命周期(验证)期间使用EntityManager,并且遇到了与之相关的错误,请参见:Hibernate validator causing many to many relationship to not save

我已经收到反馈,使用这些批注在持久层中验证实体是一个“怪异”的想法。我的问题是,我应该在哪里验证实体?就像我说的那样,我在我的其余API层上进行了验证,但是我不想仅仅假设我在与其余层无关的代码中正确构造了一个实体。

我要尝试的一个选项是在实体上使用JSR批注,但是使用@Valid在我的服务层方法中对其进行验证。问题在于EntityManager无论如何都将尝试验证那些注释,而我似乎找不到找到使它们忽略它们的方法。

当jsr303批注正常工作时,我真的不想手动执行所有验证...

0 个答案:

没有答案