对于简单的字符串字段
@Entity
class Foo {
//1. @Basic(optional = false)
//2. @Column(length = 100, nullable = false)
String name;
}
我需要使用限制名称的长度 @Column
注释,但我与可空属性混淆。虽然我正在使用其他注释 @ManyToOne
和 @OneToMany
那些使用 optional
属性,我想用 @Basic(optional)
保持大多数注释均匀。但我无法限制名称的长度 @Basic
。
那么,我应该在哪里注释可空属性 @Basic
要么 @Column
?
编辑
简单地说,您更喜欢哪种形式:
表格1:
@Entity
class Foo {
@Basic(optional = false)
@Column(length = 100)
String name;
}
表格2:
@Entity
class Foo {
@Column(length = 100, nullable = false)
String name;
}
我个人喜欢Form 1,因为 optional
属性也被使用 @ManyToOne
注释,但是表单2也很好,因为它是在单个注释中完成的。
编辑
看完之后 http://markmail.org/message/osod6rsauwbnkvya,我有区别 @Basic.optional
和 @Column.nullable
。但我仍然不知道应该使用哪一个。包含两个注释似乎很好,因此要明确定义基础表,并在实际更新之前检查JPA中的null可能稍快一些。