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



0 Answers

@Entity名称用于JPA-QL查询,默认为没有包的类名(或Java语言中的非限定类名),如果更改它,则必须确保在构建查询时使用此名称。

@Table中的名称是保存此实体的表名。

Question

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

@Entity(name="Foo")
@Table (name="Bar")
class Baz

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

在我的具体情况下,我有一个类User和一个类Group ,它们有额外的要求(据我所知),因为它们是SQL中的保留字。

在编写查询时,工作解决方案将如何显示以及我将使用哪个名称引用实体?

更新。 我在Group两个注释中添加了name="GROUPS" ,并为User了相同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]



Related