微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

如果你有课

 @Entity
 class MyEntity {}

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

 select * from MyEntity

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

如果你有课

 @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]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。