gpt4 book ai didi

java - 为什么 JBoss 5 没有验证此 EJBQL 查询?

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:34 26 4
gpt4 key购买 nike

我正在将现有应用程序从 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 不会改变任何内容。

有人知道这里出了什么问题吗?

感谢您的帮助! :-)

最佳答案

EJBQL 只识别 WHERE 子句中的字符串、整数和 boolean 文字。 'F' 是一个字符串,查询需要一个小整型值,因为我猜,该 char 被映射到一些整数值。

编辑:也许使用“F”的文字 ascii 代码 70 可用于此查询。尽管如此:SQL CHAR 数据类型不应用于映射到 cmp 字段的数据库列。也许将其更改为 varchar。

关于java - 为什么 JBoss 5 没有验证此 EJBQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3437628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com