實體狀態偵測策略
下表描述 Spring Data 提供的策略,用於偵測實體是否為新的
|
預設情況下,Spring Data 會檢查給定實體的識別符屬性。如果識別符屬性為 `null` 或原始類型的情況下為 `0`,則實體會被視為新的。否則,會被視為非新的。 |
|
如果標註了 `@Version` 的屬性存在且為 `null`,或者在版本屬性為原始類型 `0` 的情況下,則實體會被視為新的。如果版本屬性存在但具有不同的值,則實體會被視為非新的。如果沒有版本屬性,Spring Data 會回退到識別符屬性的檢查。 |
實作 `Persistable` |
如果實體實作了 `Persistable`,Spring Data 會將新實體的偵測委派給實體的 `isNew(…)` 方法。詳情請參閱 Javadoc。 注意:如果您使用 `AccessType.PROPERTY`,`Persistable` 的屬性將會被偵測和持久化。為了避免這種情況,請使用 `@Transient`。 |
提供自訂的 `EntityInformation` 實作 |
您可以透過建立模組特定儲存庫工廠的子類別並覆寫 `getEntityInformation(…)` 方法,來自訂儲存庫基礎實作中使用的 `EntityInformation` 抽象。然後,您必須將模組特定儲存庫工廠的自訂實作註冊為 Spring bean。請注意,這應該很少是必要的。 |