此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Data Commons 3.5.3spring-doc.cadn.net.cn

实体状态检测策略

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

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

@Id-财产检查(默认)spring-doc.cadn.net.cn

默认情况下,Spring Data 会检查给定实体的标识符属性。 如果标识符属性为null0对于原始类型,则假定该实体是新的。 否则,假定它不是新的。spring-doc.cadn.net.cn

@Version-物业检查spring-doc.cadn.net.cn

如果属性用@Version存在,并且null,或者如果是原始类型的版本属性0该实体被视为新实体。 如果 version 属性存在但具有不同的值,则该实体被视为不是新的。 如果不存在版本属性,Spring Data将回退到对标识符属性的检查。spring-doc.cadn.net.cn

实施Persistablespring-doc.cadn.net.cn

如果实体实现Persistable,Spring Data 将新的检测委托给isNew(…)实体的方法。 有关详细信息,请参阅 Javadocspring-doc.cadn.net.cn

注意:属性Persistable如果您使用AccessType.PROPERTY. 为避免这种情况,请使用@Transient.spring-doc.cadn.net.cn

提供自定义EntityInformation实现spring-doc.cadn.net.cn

您可以自定义EntityInformation抽象,通过创建模块特定存储库工厂的子类并覆盖getEntityInformation(…)方法。 然后,您必须将特定于模块的存储库工厂的自定义实现注册为 Spring bean。 请注意,这很少是必需的。spring-doc.cadn.net.cn