既存のアプリケーションを Weblogic サーバー 9 から JBoss 5 に移行しています。
私の問題は、次のように、WHERE 句に文字条件があるクエリにあります。
SELECT DISTINCT OBJECT(myObject)
FROM MyObject myObject
WHERE myObject.myAttribute = 'F'
... WLS で作業していたと私は信じていますが、次の理由により、JBoss での展開が中止されるようになりました。
Caused by: org.jboss.ejb.plugins.cmp.ejbql.ParseException: Encountered "\'F\'"
at line 1, column 99.
Was expecting one of:
"ABS" ...
"LENGTH" ...
"LOCATE" ...
"SQRT" ...
"MOD" ...
"(" ...
"+" ...
"-" ...
<INTEGER_LITERAL> ...
<FLOATING_POINT_LITERAL> ...
<NUMERIC_VALUED_PARAMETER> ...
<NUMERIC_VALUED_PATH> ...
ejb-jar.xml および jbosscmp-jdbc.xml ファイルは、型と属性を宣言します。Java ファイルでは、この属性の getter メソッドと setter メソッドは両方とも java.lang.Character タイプを使用します。Oracle データベースの列の型は CHAR(1) です。
jbosscmp-jdbc.xml ファイルで宣言されているクエリコンパイラは
org.jboss.ejb.plugins.cmp.jdbc.EJBQLToSQL92Compiler
このコンパイラは、EJBQL 2.1 クエリで使用する必要があるコンパイラです。コンパイラをデフォルトの JDBCEJBQLCompiler に変更しても、何も変わりません。
ここで何が問題なのか知っている人はいますか?
ご協力いただきありがとうございます!:-)