JPQL查询以更新对象

问题描述 投票:0回答:1

我正在尝试使用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]

我只是想知道是否有人知道如何解决此错误。

sql spring database jpql
1个回答
0
投票

您的描述不匹配,即我不确定“职员”来自何处。无论如何:

Hibernate文档说:

不能在批量HQL中指定隐式或显式连接,查询。子查询可在何处子句,何处子查询本身可能包含联接。

并且您在TeamEntity和Coach之间有一个隐式联接。

所以,下一个问题是,既然您拥有coachId,为什么仍然要通过TeamEntity?

update Coach c set c.endDate = ?2 where c.id = ?1

应该做的把戏

© www.soinside.com 2019 - 2024. All rights reserved.