休眠更新查询缺少关联

时间:2019-04-02 20:27:34

标签: mysql hibernate

我正在尝试使用以下查询更新实体:

@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不存在。

0 个答案:

没有答案