使用JPA时,@ Entity和@Table中的name参数有什么区别?

我正在使用JPA2和两者,@Entity并且@Table都有一个name属性,例如:

@Entity(name="Foo")

@Table (name="Bar")

class Baz

我应该使用什么,哪些是可选的?

在我的特定情况下,我有一个类User和一个类Group,它们有其他要求(据我了解),因为它们是SQL中的保留字。

可行的解决方案将是什么样子?编写查询时我将使用哪个名称来引用实体?

更新:我在中添加name="GROUPS"了两个注释,Group并为做了相同的操作User,但是现在出现了此错误:

Exception Description: The table [USERS] is not present in this descriptor.

Descriptor: RelationalDescriptor(example.Group --> [DatabaseTable(GROUPS)])

和这个错误

Internal Exception: java.sql.SQLException: Table not found in statement [SELECT ID, MAXIMUMROLE, MEMBERSHIPS_ID FROM USERS]

回答:

@Table是可选的。将POJO类注释为实体需要@Entity,但是name属性不是强制性的。

如果你有课

 @Entity

class MyEntity {}

将创建一个名为“ ”的表,并且实体名称为 。您的JPQL查询为:

 select * from MyEntity

在JPQL中,您始终使用实体名称,默认情况下它是类名称。

如果你有课

 @Entity(name="MyEntityName")

@Table(name="MyEntityTableName")

class MyEntity {}

然后用名称的表 创建和实体名称为 。

您的JPQL查询为:

 select * from MyEntityName

以上是 使用JPA时,@ Entity和@Table中的name参数有什么区别? 的全部内容, 来源链接: utcz.com/qa/419719.html

回到顶部