What#39;s the difference between the name argument in @Entity and @Table when using JPA?(使用 JPA 时,@Entity 和 @Table 中的 name 参数有什么区别?)
问题描述
我正在使用 JPA2,并且 @Entity
和 @Table
都有一个 name
属性,例如.g.:
I'm using JPA2 and both @Entity
and @Table
have a name
attribute, e. g.:
@Entity(name="Foo")
@Table (name="Bar")
class Baz
我应该使用什么,哪些是可选的?
What should I use, which ones are optional?
在我的具体情况下,我有一个类 User
和一个类 Group
,它们有额外的要求(据我所知),因为它们是 SQL 中的保留字.
In my specific case I have a class User
and a class Group
, which have additional requirements (as far as I understand) because they are reserved words in SQL.
一个可行的解决方案是什么样的?在编写查询时我将使用哪个名称来引用实体?
How would a working solution look like and with which name would I refer to the entity when writing queries?
更新:我将 name="GROUPS"
添加到 Group
的两个注释中,并为 User
做了同样的事情,但现在我明白了错误:
Update: I added name="GROUPS"
to both annotations in Group
and did the same for User
, but now I get this error:
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 属性不是必需的.
@Table is optional. @Entity is needed for annotating a POJO class as an entity, but the name attribute is not mandatory.
如果你有课
@Entity
class MyEntity {}
将创建一个名为MyEntity"的表,实体名称为MyEntity.您的 JPQL 查询将是:
A table with name "MyEntity" will be created and the Entity name will be MyEntity. Your JPQL query would be:
select * from MyEntity
在 JPQL 中,您始终使用实体名称,默认情况下它是类名称.
In JPQL you always use the Entity name and by default it is the class name.
如果你有课
@Entity(name="MyEntityName")
@Table(name="MyEntityTableName")
class MyEntity {}
然后创建名称为 MyEntityTableName 的表,实体名称为 MyEntityName.
then a table with name MyEntityTableName is created and the entity name is MyEntityName.
您的 JPQL 查询将是:
Your JPQL query would be :
select * from MyEntityName
这篇关于使用 JPA 时,@Entity 和 @Table 中的 name 参数有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 JPA 时,@Entity 和 @Table 中的 name 参数有什么区别?
基础教程推荐
- 降序排序:Java Map 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01