Spring данные JPA транзакции удалить и сохранить - PullRequest
1 голос
/ 21 октября 2019

Я использую расширение данных JPA CrudRepository для сохранения и получения данных. Я должен удалить и сохранить запись одновременно в транзакции.

Мой слой репозитория

@Repository
public interface DataRepository extends CrudRepository<TableEntity, TableEntityPK> {
        @Query("SELECT u FROM TableEntity u where u.TableEntityPK.clientID=:clientID")
        List<TableEntity> findAllByClient(@Param("clientID") String clientID);

        @Transactional
        @Modifying
        @Query("DELETE FROM TableEntity u where u.TableEntityPK.clientID=:clientID and u.TableEntityPK.eventId in :eventIds")
        void deleteAllEventByClientID(@Param("clientID") String clientID,@Param("eventIds") Set<Integer> eventIds);
}

Сначала я вызываю удаление, а затем сохранение, сохраняя метод транзакционным. Но исключение, выданное после deleteAllEventByClientID перед сохранением, удаляет данные из таблицы и пропускает сохранение. Как сделать удаление и сохранение в разрезе

@Service
public class DataServiceImpl {

    @Transactional
    public List<TableEntity> createEvent() { 
        dataRepository.deleteAllEventByClientID(subAccount.get("clientId"),eventIds);
        dataRepository.saveAll(data);
    }


}

Это будет откат в случае

dataRepository.deleteAllEventByClientID(subAccount.get("clientId"),eventIds);
throws new Exception("forced exception");
        dataRepository.saveAll(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...