对于简单的字符串字段
@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可能稍快一些。