【发布时间】:2017-03-31 17:05:16
【问题描述】:
在这三个选项中,我应该使用一个还是两个或三个组合来防止空值?
@NotNull
@Column(name = "SOME_VALUE", nullable = false)
@Basic(optional = false)
private String someValue;
请注意,我不认为这是与现有问题的重复。我看到 many questions 询问这三个选项的一个子集,但尚未找到一个询问关于这三个中的哪一个适合在现代 JPA/Hibernate 堆栈中使用。
【问题讨论】:
-
@Zeus,我已经解释了为什么我认为这不是对那个确切问题的欺骗。
-
如果您使用验证器,那么
@NotNull将在进行查询之前生成异常。如果您使用@Column(nullable = false)并且使用JPA 生成表,则插入/更新时会出现异常。@Basic(optional = false)也用于模式生成期间,因此由于违反约束而在插入/更新时会生成异常,与@Column(nullable = false)相同。一般来说,自动验证会导致错误消息的意义不如预期,因此您可能需要手动进行。
标签: hibernate validation jpa jsr