首先,让我们提醒一下实体的各种状态。根据JPA 1.0规范(在第3.2节“实体实例的生命周期”中):
本节介绍了用于管理实体实例生命周期的EntityManager操作。实体实例的特征可以是新的,管理的,分离的或删除的。
- 一个 新的 实体实例有 没有持久化标识 ,并且尚未与一个持久化上下文关联。
- 受 管 实体实例是 具有持久身份 的实例 , 该实例 当前与持久性上下文相关联。
- 甲 分离 实体实例的实例 与持久标识 与一个持久上下文相关联不是(或不再)。
- 一个 删除 实体实例与持久标识,与一个持久化上下文相关联,即定于从数据库中取出一个实例。
和一个图形化的插图:
因此,根据定义,一个独立的实体已经存在,实际上我不认为这是您的真正问题。现在,如果您想知道一个实体是否是 新 实体(即没有任何持久身份),那该怎么办:
@Transientpublic boolean isNew() { return (this.id == null);}


