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

What#39;s the difference between the name argument in @Entity and @Table when using JPA?(使用 JPA 时,@Entity 和 @Table 中的 name 参数有什么区别?)
本文介绍了使用 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 参数有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)
How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)
Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)
How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)
How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)