我正在尝试使用jpql更新名为endDate的变量,该变量的类型为LocalDate。我的查询如下:
@Modifying
@Query("UPDATE TeamEntity t SET t.coach.endDate = ?2 WHERE t.coach.id = ?1")
public void updateCoachEndDate(long coachId, LocalDate endDate);
TeamEntity类的一部分如下
@Entity
public class TeamEntity{
@ManyToOne
@JoinColumn(name = "coach_id", nullable = true)
private CoachEntity coach;
}
CoachEntity类的一部分如下
@Entity
public class CoachEntity{
@Id
private long id;
private LocalDate endDate
}
[当我对其进行测试时,似乎不喜欢
r.coach.endDate = ?2
它给我以下错误
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "UPDATE Team CROSS[*] JOIN SET END_DATE=? WHERE COACH_ID=? "; expected "., AS, SET"; SQL statement:
update team cross join set end_date=? where coach_id=? [42001-199]
我只是想知道是否有人知道如何解决此错误。
您的描述不匹配,即我不确定“职员”来自何处。无论如何:
Hibernate文档说:
不能在批量HQL中指定隐式或显式连接,查询。子查询可在何处子句,何处子查询本身可能包含联接。
并且您在TeamEntity和Coach之间有一个隐式联接。
所以,下一个问题是,既然您拥有coachId,为什么仍然要通过TeamEntity?
update Coach c set c.endDate = ?2 where c.id = ?1
应该做的把戏