首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个EJBQL查询没有被JBoss 5验证?

为什么这个EJBQL查询没有被JBoss 5验证?
EN

Stack Overflow用户
提问于 2010-08-09 13:54:55
回答 1查看 451关注 0票数 1

我正在将一个现有的应用程序从Weblogic server9迁移到JBoss 5。

我的问题是在WHERE子句中有一个字符条件的查询,就像下面这样:

代码语言:javascript
复制
SELECT DISTINCT OBJECT(myObject) 
FROM MyObject myObject 
WHERE myObject.myAttribute = 'F'

..。由于以下原因,我认为它正在与WLS一起工作,现在导致与JBoss的部署中止:

代码语言:javascript
复制
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文件中声明的查询编译器是

代码语言:javascript
复制
org.jboss.ejb.plugins.cmp.jdbc.EJBQLToSQL92Compiler

这个编译器应该与EJBQL2.1查询一起使用。将编译器更改为默认的JDBCEJBQLCompiler不会更改任何内容。

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

谢谢你的帮助!:-)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-09 16:42:56

EJBQL只知道WHERE子句中的字符串、整数和布尔文字。'F‘是一个字符串,查询需要一个小整数值,因为我猜,char映射到了一些整数值。

编辑:也许使用'F‘的文字ascii-code 70可以用于此查询。尽管如此,SQL CHAR数据类型不应用于映射到cmp字段的数据库列。也许可以把它改成varchar。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3437628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档