我正在将现有应用程序从 Weblogic server 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 不会更改任何内容。
有人知道这里有什么问题吗?
谢谢你的帮助!:-)