Java Persistence / JPA:@Column vs @Basic

2022-08-31 08:37:36

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


答案 1
  • @Basic表示要持久化属性并使用标准映射。它具有参数,允许您指定是否要延迟加载属性以及它是否为 null。

  • @Column允许您指定数据库中要将属性保存到的列的名称。

如果您指定一个而不指定另一个,那么您将获得明智的默认行为,因此通常人们只使用一个,除了特殊情况。

因此,如果我们想要延迟加载属性并指定列名,我们可以说

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

如果我们使用默认的,非懒惰的行为,那么就足够了。@Column


答案 2

除了@djna的答案外,值得注意的是,应该与 和 进行比较。只能在任何属性上指定其中之一。@Basic@OneToMany@ManyToOne@ManyToMany

@Column并且可以与其中任何一个一起指定,以描述数据库列属性。@JoinColumn

这是两组可以一起使用的批注,但一次只能使用每组批注的一个批注。


推荐