在Spring Data JPA 中使用Update Query更新實體類


對於 Spring Data JPA 使用的時間不長,只有兩年時間。但是踩過坑的卻不少。
使用下列代碼

@Modifying @Query("update User u set u.firstname = ?1 where u.lastname = ?2") int setFixedFirstnameFor(String firstname, String lastname);

首先讓人奇怪的是,repository method只能返回int或者轉為void,因為這個操作只會把數據寫入到數據庫,但是不會select。
執行完modifying query, EntityManager可能會包含過時的數據,因為EntityManager不會自動清除實體。
只有添加clearAutomatically屬性,EntityManager才會自動清除實體對象。

@Modifying(clearAutomatically = true)
@Query("update RssFeedEntry feedEntry set feedEntry.read =:isRead where feedEntry.id =:entryId")
void markEntryAsRead(@Param("entryId") Long rssFeedEntryId, @Param("isRead") boolean isRead);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM