2011-10-25 4 views
1

名前付きクエリは、このようになります:JPAは、MySQLのMATCH関数を使用して名前付きクエリをexcutingにエラーが発生します

@NamedQuery(name = "Table.findFTS", query = "SELECT t FROM table t WHERE MATCH(t.field1, t.field2) AGAINST (':text' IN BOOLEAN MODE)")

とエラー:

Exception: Exception [EclipseLink-8025] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.JPQLException Exception Description: Syntax error parsing the query [Businesses.findFTS: SELECT t FROM table t WHERE MATCH(t.field1, t.field2) AGAINST (':text' IN BOOLEAN MODE)], line 1, column 38: unexpected token [(]. Internal Exception: NoViableAltException([email protected][()* loopback of 383:9: (d= DOT right= attribute)*])私は知らない

はなぜこれを取得していますが、それはそうですMATCH関数が頭痛を与えている

答えて

1

JPQLでクエリを実行している場合は、 SQLではなくJPQLを使用しています。私が知る限り、JPQLには「MATCH」機能はありません。しかし、NamedNativeQueryに興味があるかもしれません。

独自の方言を作成する必要があります休止状態を使用して::私はのEclipseLinkを推測

public class MyMySQLDialect extends org.hibernate.dialect.MySQLDialect { 
    public MyMySQLDialect() { 
     super(); 
     registerFunction("match", new MatchFunction(new AnyType(),"?1 AGAINST ?2")); 
    } 
} 

が同様のものを提供していますアウト・オブ・ボックス私はこれを考えていない

+0

よろしくお願いいたします。今、私は理解しています – burntblark

1

がサポートされています。

+0

こんにちは、あなたの考えは良いと思います!しかし、registerFunction()の第2パラメータは何ですか? – Scarlett

関連する問題