QuerySyntaxException: ожидание ЗАКРЫТЬ, найдено 'нулевым' в строке 1 - PullRequest
0 голосов
/ 19 февраля 2020

У меня проблемы с запуском запроса в Hibernate. Учитывая следующую сущность ...

@Getter
@EqualsAndHashCode
@ToString
@Entity
@Table(name = "configuration")
@IdClass(ConfigurationPk.class)
@EntityListeners(AuditingEntityListener.class)
public class Configuration implements Persistable<UUID> {

    @Id
    @Column(name = "id", nullable = false, updatable = false)
    @NotNull
    @Setter
    private UUID id;

    @Id
    @Column(name = "version", nullable = false, updatable = false)
    @NotNull
    @Setter
    private int version;

    @Column(name = "close_date")
    @Setter
    private LocalDateTime closeDate;

    @Column(name = "definition")
    @Lob
    @Setter
    private String definition;

    public boolean isNew() {
        return closeDate == null;
    }
}

... и следующий составной первичный ключ:

@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@ToString
public class ConfigurationPk implements Serializable {

    private UUID id;
    private int version;
}

Я попытался связать пользовательский запрос с методом findAll:

@Repository
public interface ConfigurationRepository extends JpaRepository<Confguration, UUID> {
    ...

    @Query(value = "SELECT c FROM Configuratin c"
      + " WHERE c.closeDate IS NULL"
      + " AND (c.id, c.version) IN (SELECT c.id, MAX(c.version) AS version"
      + " FROM Configuration c GROUP BY c.id ORDER BY c.id)", nativeQuery = true)
    List<Configuration> findAll();
}

Запрос выше выглядит хорошо для меня ... но если мы посмотрим на сообщение об ошибке, кажется, что последняя заключительная скобка отсутствует:

org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE, found 'null' near line 1, column 281 [select count(q) FROM com.avaloq.awp.profiling.persistence.model.questionnaire.QuestionnairePo q WHERE q.closeDate IS NULL AND (q.id, q.version) IN (SELECT q.id, MAX(q.version) AS version FROM com.avaloq.awp.profiling.persistence.model.questionnaire.QuestionnairePo q GROUP BY q.id]

Я что-то упустил? Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...