簡體   English   中英

Hibernate/JPA 是否可以“更新而不選擇”?

[英]Is “update without select” possible with Hibernate/JPA?

因此,使用 JPA/Hibernate,您當然可以加載實體“代理”,而無需使用session.load()entityManager.getReference()類的東西訪問數據庫。

但是,如果 Hibernate 從數據庫中初始化代理,似乎不可能在這些“代理”上設置屬性。 因此,您不能在沒有選擇的情況下僅保留更改的值(通過實體上的@DynamicUpdate )。

我相信這就是它的方式,如果您想在update without select ,則必須自己滾動。 如果有人能證明我錯了,我會很高興! 我錯過了什么嗎?

恐怕你是對的,正如@DynamicUpdate 的 java-doc 中所寫:“注意,對於分離實體的重新附加,如果不啟用更新前選擇,這是不可能的。”

nicolasl 給出的答案對於這種情況是不正確的,如果您希望在使用 CrudRepository.save() 時控制是否觸發persist 或merge,則需要實現persistable

AFAIK 選擇由合並操作執行,其唯一目的是檢查實體是否已存在於您的數據庫中。 如果這是正確的,您可以像他們在文檔中所說的那樣實施自己的驗證:

實現持久化:如果一個實體實現了持久化,Spring Data JPA 將新的檢測委托給實體的 isNew(…) 方法。 有關詳細信息,請參閱 JavaDoc。

實現 EntityInformation:您可以通過創建 JpaRepositoryFactory 的子類並相應地覆蓋 getEntityInformation(...) 方法來自定義 SimpleJpaRepository 實現中使用的 EntityInformation 抽象。 然后,您必須將 JpaRepositoryFactory 的自定義實現注冊為 Spring bean。 請注意,這應該很少需要。 有關詳細信息,請參閱 JavaDoc。

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.entity-persistence. Saving-entites

我從來沒有實現過這樣的事情,但我想你可以試一試......

希望這對你有幫助

干杯

二尾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM