什么是使用JPA时@Entity和@Table名称参数之间的区别?

我使用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是可选的。 需要@Entity注释为一个POJO类作为一个实体,但名称属性不是强制性的。

如果你有一个类

@Entity
class MyEntity {}

将创建一个名为“myEntity所 ”A表和实体名称将myEntity所 。 您JPQL查询将是:

select * from MyEntity

在JPQL你总是使用实体名称,默认情况下它是类名。

如果你有一个类

@Entity(name="MyEntityName")
@Table(name="MyEntityTableName")
class MyEntity {}

然后创建了名称MyEntityTableName一个表和实体名称MyEntityName。

您JPQL查询将是:

select * from MyEntityName

名称@Entity是JPA-QL查询,默认为类名,而不包(或不合格的类名,在Java中的行话),如果你改变它,你必须确保你建立查询时使用此名称。

名称@Table就是这个实体保存表名。

分类:java的 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.738 (s). 10 q(s)