我在JPA中有一个单表映射的继承,Say A和B扩展了一些抽象实体,所以我必须从A& B在DB端可以为空,但如果有人试图坚持A,那么A的所有字段都不应为空,我想通过代码强制执行此操作。
我可以使用以下代码来实现这一点 -
@Entity
@DiscriminatorValue("1")
public Class A extends SomeAbstractEntity{
@Basic(optional = false)
private String nameOfA;
}
我读了这个答案@Basic(optional = false) vs @Column(nullable = false) in JPA并认为这可能是可以实现的,但想知道最好的方法是什么。
答案 0 :(得分:2)
这很有趣,但看起来在这种情况下(单表继承)@Basic(optional = false)
不是由Hibernate强制执行的(尽管在其他情况下它可以按预期工作)。
如果是这样,强制执行此规则的唯一选择是使用JSR-303 Bean Validation中的@NotNull
约束。 JSR-303与JPA 2.0平滑集成,因此在实体持久化时会自动检查约束,请参阅Hibernate Validator。