Answers:
@Basic
表示要保留属性,并且要使用标准映射。它具有参数,可让您指定是否延迟加载属性以及该属性是否可为空。
@Column
允许您在数据库中指定属性要保留的列的名称。
如果您指定一个不带另一个,那么您会得到明智的默认行为,因此,除特殊情况外,通常人们只使用一个。
因此,如果我们想要延迟加载属性并指定列名,我们可以说
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
如果我们选择了默认的非懒惰行为,那么只需@Column
足够了。
值得注意的是Basic是为原始字段设计的
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
基本属性是一种属性,其中属性类是简单类型,例如字符串,数字,日期或基元。基本属性的值可以直接映射到数据库中的列值。
支持的类型和转换取决于JPA实施和数据库平台。任何使用不直接映射到数据库类型的基本属性都可以序列化为二进制数据库类型。
在JPA中映射基本属性的最简单方法是不执行任何操作。没有其他注释且不引用其他实体的任何属性都将自动映射为基本属性,如果不是基本类型,甚至会序列化。该属性的列名将默认,与属性名相同,大写。
@Basic
没有可以使用@Column
,这就是optional
和nullable
属性都存在于其中的原因。我对吗?