问题描述
@Table是可选的。将POJO类注释为实体需要@Entity,但是name属性不是强制性的。
如果你有课
@Entity
class MyEntity {}
将创建一个名为“ ”的表,并且实体名称为 。您的JPQL查询为:
select * from MyEntity
如果你有课
@Entity(name="MyEntityName")
@Table(name="MyEntityTableName")
class MyEntity {}
您的JPQL查询为:
select * from MyEntityName
解决方法
我正在使用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]