使用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