gpt4 book ai didi

jpa - 为什么实体类必须有一个@Id?

转载 作者:行者123 更新时间:2023-12-04 13:23:26 25 4
gpt4 key购买 nike

我对此有点困惑。当我尝试创建一个没有@Id 的实体时,编译时给我一个错误,我必须设置主键使用@Id,我什至无法将应用程序部署到应用程序服务器(我使用 payara)。但是官方 Java EE 7 教程文档中对实体类的要求并没有包含实体必须具有@Id 的规则。并且,该文档中实体的定义:

Typically, an entity represents a table in a relational database, and each entity instance corresponds to a row in that table.

但我可以创建一个没有主键的数据表。

所以我的问题实际上是为什么我们必须在实体中设置@Id。还有其他的考虑吗?例如,使用@Id 来标识持久化上下文中的特定实体,以便我们可以使用 em.find(id)?如果我坚持创建一个没有@Id 的实体,我该怎么办,哈哈。

感谢您的帮助。

最佳答案

JPA 实体 bean 需要以一种或另一种方式指定主键。

来自 JSR 338:JavaTM Persistence API,2.1 版规范

2.4 Primary Keys and Entity Identity:

Every entity must have a primary key.

The primary key must be defined on the entity class that is the root of the entity hierarchy or on a mapped superclass that is a (direct or indirect) superclass of all entity classes in the entity hierarchy. The primary key must be defined exactly once in an entity hierarchy.

A primary key corresponds to one or more fields or properties (“attributes”) of the entity class.
...

关于jpa - 为什么实体类必须有一个@Id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com