java - Java Persistence / JPA:@Column vs @Basic

jpa中的@Column@Basic注释有什么区别?它们可以一起使用吗?它们应该一起使用吗?还是其中一个就足够了?


最佳答案:

@Basic表示要持久化属性,并使用标准映射。它具有允许您指定是否延迟加载属性以及是否可以为空的参数。
@Column允许您指定要将属性持久化到的数据库中的列的名称。
如果您指定其中一个而不指定另一个,那么您将得到默认行为,这是合理的,因此通常人们只使用其中一个,特殊情况除外。
因此,如果我们希望延迟加载属性并指定列名,我们可以说

 @Basic(fetch=FetchType.LAZY)
 @Column(name="WIBBLE")

如果我们需要默认的、非懒惰的行为,那么只要@Column就足够了。