#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() на самом деле ожидает найти только одну запись в таблице, где поскольку имеется несколько строк.
изменение сигнатуры метода должно работать, как ожидалось, без ожидания. Поскольку в сигнатуре метода ожидаются слова с заглавной буквы
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);