Как использовать полнотекстовый поиск MySQL из JPA

Я хочу использовать функции полнотекстового поиска MySQL с использованием JPA, без необходимости использовать собственный запрос.

Я использую EclipseLink, в котором есть функция для поддержки собственных команд SQL: FUNC . Однако примеры справки показывают, что это используется только с простыми функциями MySQL. Моя лучшая попытка заставить его работать с ПОИСКПОЗ & ПРОТИВ:

@PersistenceContext(name="test")
EntityManager em;

Query query = em.createQuery("SELECT person FROM People person WHERE FUNC('MATCH', person.name) FUNC('AGAINST', :searchTerm)");
...
query.getResultList();

Что дает следующее исключение:

Caused by: NoViableAltException(32@[()* loopback of 822:9: (m= MULTIPLY right= arithmeticFactor | d= DIVIDE right= arithmeticFactor )*])
    at org.eclipse.persistence.internal.libraries.antlr.runtime.DFA.noViableAlt(DFA.java:159)
    at org.eclipse.persistence.internal.libraries.antlr.runtime.DFA.predict(DFA.java:116)
    at org.eclipse.persistence.internal.jpa.parsing.jpql.antlr.JPQLParser.arithmeticTerm(JPQLParser.java:4557)
    ... 120 more

Я открыт для других альтернатив, которые используют метод FUNC.

Я использую EJB 3 и EclipseLink 2.3.1.

5
задан Kevin 8 February 2012 в 03:59
поделиться