Я пытаюсь обновить столбец в таблице весной, используя репозиторий JPA, используя следующий запрос
@Modifying
@Query("UPDATE Price p SET p.price=:price where p.timePeriod=:timePeroid and p.outletVariety.outletProduct.outlet.id=:oId and p.outletVariety.variety.id=:vId")
Integer updatePriceForVarietyandOutlet(@Param("price") Double price,@Param("timePeroid") LocalDate timePeroid,@Param("oId") Long oId , @Param("vId") Long vId);
Но я получаю следующее исключение
org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement
Я где-то читал, что JOIN не разрешен в обновлении JPA, поэтому я попытался использовать собственный запрос, как показано ниже
update pi.price join pi.outlet_product_variety on pi.price.outlet_vareity_id=pi.outlet_product_variety.id join pi.outlet_product on pi.outlet_product_variety.outlet_product_id=pi.outlet_product.id set price =10 where time_period='2018-01-01' and vid=698
Но он все еще не работает, и никаких исключений не ожидается. Какое решение этой проблемы. Спасибо
@marok Спасибо за предложение. Также, пожалуйста, скажите, правильный ли собственный запрос?
Я предпочитаю не использовать собственные запросы, если это не проще, чем ни один собственный запрос
@marok Ладно, а в случае апдейта в каком join нужен нативный?
Как спросил @marok в первом комментарии. Покажите журналы и инструкцию SQL, созданную Hibernate.
Это необязательно. Сначала посмотрите журналы, чтобы узнать причину.
Собственно то, что он опубликовал, взято из логов. Та же проблема здесь с использованием DB2.




В журналах у вас должно быть больше информации, и она должна начинаться с «Причина»: