编程语言
首页 > 编程语言> > java – JSR-303和JPA重叠

java – JSR-303和JPA重叠

作者:互联网

阿罗哈嘿!

我已经使用了JPA注释,现在我想使用JSR-303注释来验证属性.

我的问题是,他们彼此之间的互动有多好?
如果我使用@Basic(可选= false)或@NotNull,我仍然需要使用nullable = false等吗?

我还没有决定使用哪种验证器实现,例如hibernate-validator或oVal(你也可以建议别人.我知道oVal is not a JSR-303 implementation, but it maps most annotations).

oVal手册(见上文)指出某些JPA注释也将被翻译成oVal注释.
Hibernate-validator has a similar mechanism.

一些搜索结果声称Bean Validation和JPA正式重叠,但我还没有想出具体的方法.

解决方法:

它们都是运行时间检查.但是有一些不同
JPA规范声明@Basic(可选= false)可以用作模式提示,即如果您通过JPA更新数据库模式(虽然通常不是一个好习惯),您可以使用它来指示此列值不能为null并且必须有价值.

Section 9.1.18 Basic Annotation of JPA1 specification

Section 11.1.6 Basic Annotation of JPA2 specification

清楚地表明这一点.

除此之外,在将sql发送到数据库之前,两者都会进行运行时检查.
一般用于在将SQL发送到服务器之前进行验证,如果您使用的JSR 303包含许多其他检查,那么您将使用@NotNull但是您可能没有使用JSR 303,在这种情况下您可以使用@Basic(可选= false)甚至在JSR 303之前就已经出局了,但是不比JSR303更受欢迎.
您现在可能想知道@Column(nullable = false)纯粹用于数据库端.
您是否应该同时使用 – 只有在允许JPA更新架构时才会使用,否则JSR-303优先于另一个.

标签:java,jpa,bean-validation
来源: https://codeday.me/bug/20190902/1794232.html