我正在使用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是可选的。将POJO类注释为实体需要@Entity,但是name属性不是强制性的。
如果你有课
@Entity
class MyEntity {}
将创建一个名为“ MyEntity ”的表,并且实体名称为 MyEntity 。您的JPQL查询为:
select * from MyEntity
在JPQL中,您始终使用实体名称,默认情况下它是类名称。
如果你有课
@Entity(name="MyEntityName")
@Table(name="MyEntityTableName")
class MyEntity {}
然后用名称的表 MyEntityTableName 创建和实体名称为 MyEntityName 。
您的JPQL查询为:
select * from MyEntityName
问题内容: 之间有什么区别? 和 在SQL Server 2008中? 问题答案: 临时表在大多数特性上都与普通表相似,只是它们进入TempDB而不是当前数据库,并且在有限范围后消失(取决于它们是基于会话的表还是全局的Temp表。记录到事务日志中,以及所有涉及性能的信息。otoh,您还可以像在普通表中一样向临时表中添加尽可能多的索引或视图,触发器或其他任何您想要的内容。 表变量是一种快捷的内存表(
问题内容: 请帮助我了解在哪里使用常规JOIN和JOIN FETCH。 例如,如果我们有这两个查询 和 它们之间有什么区别吗?如果是,何时使用哪个? 问题答案: 在这两个查询中,你正在使用JOIN查询与至少一个部门关联的所有员工。 但是,不同之处在于:在第一个查询中,你仅返回hibernate的Employes。在第二个查询中,你将返回员工和所有关联的部门。 因此,如果你使用第二个查询,则无需执行
Java的和有什么区别?
问题内容: 之间有什么区别? 和 问题答案: 可以在关系的两边使用。 现在的问题是关于使用上侧(极少数情况下)。这里的重点是 物理信息重复 (列名)以及 未优化的SQL查询,这会产生一些其他语句。 根据文件: 由于 多对一的 (几乎)总是 所有者侧 的在JPA规范的双向关系中,一对多关联是通过注解 通过troop属性具有双向的一对多关系。您不必(不必)在侧面定义任何物理映射。 要 以一对多方为拥有
问题内容: 之间有什么区别 和 此示例来自Java EE教程,但我仍然不了解详细信息。 问题答案: 从这里: 级联删除 用CascadeType.REMOVE(或CascadeType.ALL,包括REMOVE)标记引用字段表示删除操作应自动级联到该字段引用的实体对象(多个实体对象可以被collection字段引用): 移除孤儿 JPA 2支持附加的,更积极的删除级联模式,可以使用@OneToOn
问题内容: 我对Spring Data-JPA和JPA之间的区别感到困惑。我了解JPA,它是使用流行的ORM技术将Java对象持久化到关系数据库的规范。 换句话说,JPA提供接口和其他ORM技术,实现那些称为JPA提供程序的接口,例如Hibernate。 现在,Spring Data JPA到底是什么? Spring Data JPA是否在JPA之上添加了更多功能(接口),并且仍然仅被指定还是JP