【发布时间】:2012-02-08 01:59:20
【问题描述】:
我想通过 JPA 使用 MySQL's full text search 功能,而不必使用本机查询。
我正在使用 EclipseLink,它具有支持原生 SQL 命令的功能:FUNC。但是,帮助示例仅显示了它与简单的 MySQL 函数一起使用。我尽最大努力让它与 MATCH & AGAINST 一起工作如下:
@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。
【问题讨论】:
-
你尝试过 createNativeQuery 吗?
标签: jpa full-text-search eclipselink