MYSQL не работает MATCH AGAINST

Запрос: @Query("SELECT m FROM Message WHERE MATCH (textMessage) AGAINST (':word')")

Ошибка: Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: AGAINST near line 1, column 63 [SELECT m FROM server.entity.Message WHERE MATCH (textMessage) AGAINST (':word')]

Что ему не нравится в моем against?

UPD: Исправил следующим образом:

@Query(
            value = "SELECT * FROM Message WHERE MATCH(textMessage) AGAINST (:word IN BOOLEAN MODE)",
            nativeQuery = true)
    List<Message> getMessageByWordIndexed(@Param("word") String word);

Но почему то этот запрос все равно не использует индексы...
UPD2: Понял, что написал глупость по поводу индексов.


Ответы (1 шт):

Автор решения: ferZ

Итак, AGAINST в запросе не работает по той же причине, что и не работает * после SELECT: в hql это не предусмотрено (ссылка на мануал с синтаксисом HQL).

Для того, что бы этот запрос работал, надо создать нативный запрос (на мысль меня подтолкнул это мануал).

→ Ссылка