对于最新的稳定版本,请使用 Spring Data Commons 4.0.4spring-doc.cadn.net.cn

实体状态检测策略

下表描述了 Spring Data 提供的用于检测实体是否为新实体的策略:spring-doc.cadn.net.cn

表1. Spring Data 中用于检测实体是否为新实体的选项

@Id 属性检查(默认)spring-doc.cadn.net.cn

默认情况下,Spring Data 会检查给定实体的标识符属性。 如果该标识符属性为 null,或者在基本类型的情况下为 0,则认为该实体是新建的。 否则,则认为该实体不是新建的。spring-doc.cadn.net.cn

@Version 属性检查spring-doc.cadn.net.cn

如果存在一个带有 @Version 注解的属性,并且其值为 null,或者对于基本类型(primitive type)的版本属性其值为 0,则该实体被视为新实体。 如果存在版本属性但其值不为上述情况,则该实体被视为非新实体。 如果没有版本属性,Spring Data 将回退到检查标识符(identifier)属性。spring-doc.cadn.net.cn

实现 Persistablespring-doc.cadn.net.cn

如果一个实体实现了 Persistable 接口,Spring Data 会将新实体的检测委托给该实体的 isNew(…) 方法。 详见 Javadocspring-doc.cadn.net.cn

注意:如果你使用 PersistableAccessType.PROPERTY 的属性将被检测并持久化。 为避免这种情况,请使用 @Transientspring-doc.cadn.net.cn