Я переношу существующее приложение с сервера 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 по умолчанию ничего не меняет.
Кто-нибудь знает, что здесь не так?
Спасибо за вашу помощь! : -)