@Entity和@Table中的名称属性

2022-08-31 09:16:50

我对此有疑问,因为名称属性在@Entity和@Table

例如,允许我对 name 属性具有相同的值

@Entity(name = "someThing")
@Table(name = "someThing")

对于同一类,我也可以使用不同的名字

 @Entity(name = "someThing")
 @Table(name = "otherThing")

谁能告诉我这两者之间有什么区别,为什么我们在两者中具有相同的属性?


答案 1
@Entity(name = "someThing") => this name will be used to name the Entity
@Table(name = "someThing")  => this name will be used to name a table in DB

因此,在第一种情况下,您的表和实体将具有相同的名称,这将允许您在编写 HQL 或 JPQL 时访问与实体同名的表。

在第二种情况下,在编写查询时,您必须使用@Entity中给出的名称,而@Table中给出的名称将用于命名数据库中的表。

因此,在 HQL 中,你的 someThing 将引用 DB 中的 otherThing


答案 2

@Entity(name = "someThing")=>此名称将用于标识域。此名称只能通过查询来标识。即..域对象的名称hql

@Table(name = "someThing")=>此名称将用于域对象引用的表。即..表的名称


推荐