Spring Data Repository @Query - Update and return modified entity

前端 未结 3 403
旧时难觅i
旧时难觅i 2020-12-09 19:52

let\'s assume we have a Spring Data repository interface with a custom method...

@Modifying
@Transactional
@Query(\"UPDATE MyEntity SET deletedAt = CURRENT_T         


        
3条回答
  •  醉酒成梦
    2020-12-09 20:40

    There are two ways to do that:

    The JPA idiomatic way to do this is to load the entities first, then changing them using Java code.

    Doing this in a transaction will flush the changes to the database.

    If you insist on doing a batch update you need to mark the entities as part of the update. Maybe with a timestamp, maybe the update itself already marks them. And then you reload them using a select statement that uses the marker set during the update.

    Note that you have to ensure that the entities don't exist yet in your EntityManager, otherwise you will keep the old state there. This is the purpose of @Mdoifying(clearAutomatically=true) recommended by other answers.

提交回复
热议问题