實體狀態偵測策略

下表描述 Spring Data 提供的實體是否為新的偵測策略

表 1. Spring Data 中實體是否為新的偵測選項

@Id-屬性檢查 (預設)

預設情況下,Spring Data 會檢查給定實體的識別符屬性。如果識別符屬性為 null 或原始型別的 0,則該實體會被視為新的實體。否則,會被視為不是新的實體。

@Version-屬性檢查

如果存在以 @Version 註解的屬性且為 null,或者在原始型別的版本屬性為 0 的情況下,則該實體會被視為新的實體。如果版本屬性存在但具有不同的值,則該實體會被視為不是新的實體。如果沒有版本屬性,Spring Data 將回退到識別符屬性的檢查。

實作 Persistable

如果實體實作了 Persistable,Spring Data 會將新實體的偵測委派給實體的 isNew(…)` 方法。詳情請參閱 Javadoc

注意:如果您使用 AccessType.PROPERTYPersistable 的屬性將會被偵測和持久化。為了避免這種情況,請使用 @Transient

提供自訂的 EntityInformation 實作

您可以透過建立模組特定 Repository 工廠的子類別並覆寫 getEntityInformation(…)` 方法,來自訂 Repository 基礎實作中使用的 EntityInformation 抽象。然後,您必須將模組特定 Repository 工廠的自訂實作註冊為 Spring Bean。請注意,這應該很少是必要的。