JPA обновляет несколько записей в таблице для идентификатора

#java #spring-boot #jpa #spring-data-jpa

#java #spring-boot #jpa #spring-data-jpa

Вопрос:

У меня есть требование для входной записи с id1 из источника, в целевой таблице мне нужно обновить значение v1 в столбце c1, а в target для id1 есть несколько записей. Используя JPA, мне нужно обновить все эти записи значением v1. Использование JPA каков наилучший способ сделать это?

Я использовал ниже findallbyid(), затем saveall() — не удалось сказать, что в target есть несколько записей, но ожидалось, что одна.

Комментарии:

1. Можете ли вы показать нам свой фрагмент кода и исключение, которое вы получаете?

Ответ №1:

На основе предоставленных сведений найдите allbyid() затем saveall()

здесь метод findallbyid() на самом деле ожидает найти только одну запись в таблице, где поскольку имеется несколько строк.

изменение сигнатуры метода должно работать, как ожидалось, без ожидания. Поскольку в сигнатуре метода ожидаются слова с заглавной буквы

https://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/repository/JpaRepository.html

List<T> findAllById(Long id);

но рекомендуем не читать все строки, а затем сохранять снова только для обновления одного или двух столбцов, вы можете использовать что-то вроде приведенного ниже для достижения того же

 @Modifying
@Transactional
@Query(value = "UPDATE table t SET t.column = :status WHERE t.id = :id")
int update(@Param("status") String status, @Param("id") Long id);