Я пытаюсь обновить объект с помощью следующего запроса:
@Transactional
@Modifying
@Query("UPDATE WeeklyCare wc SET wc.personalCare = wc.personalCare + :newPersonalCare WHERE wc.citizen.cpr = :cpr AND wc.week = :week AND wc.year = :year")
int updateByIdentifier(@Param("newPersonalCare") Double newPersonalCare, @Param("cpr") String cpr, @Param("week") Integer week, @Param("year") Integer year);
Это SQL-запрос, который генерируется:
update weekly_care cross join set personal_care=personal_care+? where cpr=? and week=? and year=?
Что приводит к MySQLSyntaxErrorException
. Как видите, после cross join
чего-то не хватает. Кажется, он не может найти wc.citizen
из запроса. Почему это происходит? Когда я выполняю этот запрос:
@Query("FROM WeeklyCare wc WHERE wc.citizen.cpr = :cpr AND wc.week = :week AND wc.year = :year")
WeeklyCare findByIdentifier2(@Param("cpr")String cpr, @Param("week")Integer week, @Param("year") Integer year);
Возвращает WeeklyCare
с ассоциированным Citizen
. Так что это не потому, что Citizen
не существует.