我正在尝试使用以下查询更新实体:
@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
不存在。