JPQL-запрос для обновления объекта - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь обновить переменную с именем endDate, которая имеет тип LocalDate, используя jpql. Мой запрос выглядит следующим образом:

@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]

Мне просто интересно, если кто-нибудь знать, как исправить эту ошибку.

1 Ответ

0 голосов
/ 23 марта 2020

Ваши описания не совпадают, т.е. я не уверен, откуда взялись "сотрудники". В любом случае:

Документация Hibernate гласит:

В массовом запросе HQL нельзя указать ни явное, ни явное соединение. Подзапросы могут использоваться в предложении where, где сами подзапросы могут содержать объединения.

И у вас есть неявное соединение между TeamEntity и Coach.

Итак, следующий вопрос: почему в любом случае go через TeamEntity, так как у вас есть идентификатор coachI *?

...