java Sping Boot 中@Entity和@Table的区别,我们需要两者吗?

0qx6xfy6  于 2023-02-02  发布在  Java
关注(0)|答案(3)|浏览(199)

对于一个模型类,我们需要两个annonation吗?@Entity和@Table之间有什么区别

@Entity
@Table(name = "widget") // do we need this??
public class WidgetEntity {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  private String clientName;
}
rm5edbpk

rm5edbpk1#

您需要@Entity,但@Table是一个可选注解,您可以覆盖默认的表名、模式名等。

3mpgtkmj

3mpgtkmj2#

如果您计划将某个类作为一个实体由Hibernate扫描和查看,那么它必须具有@Entity注解。现在,由于Hibernate是一个对象关系Map工具,这意味着当您将

@Entity <-- this is an entity class that you will work with
@Table(name = "widget") <-- and this is a corresponding table that matches that entity in the database

同样的道理也适用于

@Column(name="clientName")<-- this is a value from your database field that will correspond with your entity field
private String clientName <-- this is your entity field

使用Hibernate时,您需要在类中解释两个领域,SQL领域和Java Hibernate领域。

qlckcl4x

qlckcl4x3#

最近我发现了一个警告,如果你不使用@Table annnotation。
Spring Data JDBC -无法安全地识别存储库候选接口XXXRepository的存储分配;如果希望此资料档案库成为JDBC资料档案库,请考虑使用以下注解之一来注解实体:org.springframework.data.relational.core.mapping.Table.

相关问题