****使用EJB QL语言定义一find方法来开发实体EJB的简单问题。

cat7708 2004-04-13 10:28:11
不知道为什么会出现一大堆错误?是不是通过查询语言建立EJB应该注意些什么呢?
我的EJB QL语句如下:SELECT i FROM student AS i WHERE i.sname=?
另外,EJB QL语句的大小写是不是一样的?而我如果不定义查询方法的话,编译,发布就没问题了。
...全文
34 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cat7708 2004-04-14
  • 打赏
  • 举报
回复
不行啊.我又重新做了一个.对表grade(sno,cno,grade)建CMP,刚开始我没建find函数,编译,布署都正常,但一定义find函数就不行了.错误信息拷贝如下:
"xie.ejbgrpx": Spaces in the temporary directory path may cause WebLogic EJBC utility to produce fatal compile errors.
"xie.ejbgrpx": D:\bea7\jdk131_02\bin\javaw -classpath "D:\bea7\weblogic700\server\lib\weblogic.jar;D:\JBuilder8\lib\msbase.jar;D:\JBuilder8\lib\mssqlserver.jar;D:\JBuilder8\lib\msutil.jar;" weblogic.ejbc -keepgenerated -compiler D:/JBuilder8/bin/bcjW D:/JBuilder8/xsm/xie/xie.jar.jar D:/JBuilder8/xsm/xie/xie.jar

"xie.ejbgrpx": ERROR: Error from ejbc: Error while reading 'META-INF/weblogic-cmp-rdbms-jar.xml'. The error was:
"xie.ejbgrpx":
"xie.ejbgrpx": weblogic.ejb20.cmp.rdbms.finders.IllegalExpressionException:
"xie.ejbgrpx": While trying to process Query
"xie.ejbgrpx": Method Name: findByGrade
"xie.ejbgrpx": Parameter Types: (java.lang.String)
"xie.ejbgrpx": EJB Query: SELECT i FROM Grade AS i WHERE i.grade=?1
"xie.ejbgrpx": )
"xie.ejbgrpx": Could not parse EJB QL expression: SELECT i FROM Grade AS i WHERE i.grade=?1
"xie.ejbgrpx": ERROR: ejbc found errors
其中,find函数我的定义如下:
findname:findByGrade
Return type:GradeRemote
input parameters:java.lang.String grade
Home interfaces:home/localhome
Query:SELECT OBJECT(i) FROM Grade AS i WHERE i.grade=?1
建的CMP为Grade,而数据库中的表为grade,各位大侠帮忙看看啊,到底是错在哪里了?

cat7708 2004-04-14
  • 打赏
  • 举报
回复
原来这样啊。谢谢老大。我回去试试看。
  • 打赏
  • 举报
回复
Object关键字不可以省略吧?SELECT OBJECT(X) FROM。。。。
tanguangbin 2004-04-13
  • 打赏
  • 举报
回复
WHERE i.sname=?1

EJB QL语句的大小写是不是一样的?
要注意 student , i.sname 要和你的实体BEAN连接的表名和字段相同,大小写等要一致的.

如果我说错了,请把你的错误COPY出来,看一下 ^_^

moke33 2004-04-13
  • 打赏
  • 举报
回复
SELECT i FROM student AS i WHERE i.sname=?
应为:
SELECT OBJECT(i) FROM StudentBeaan AS i WHERE i.sname=?1
解释:
EJB-QL为大小写敏感,不能随便写

FROM后面根的为Schema name,在你创建ejb的时候可以指定,不一定就是真实的数据表名

查询的参数可以用 ?1,?2...?n指定
tanghuan 2004-04-13
  • 打赏
  • 举报
回复
i.sname=?

i.sname=?1
cat7708 2004-04-13
  • 打赏
  • 举报
回复
表student(sname,sno,sage,clno)
不好意思,我现在在网吧,暂时不能copy错误信息。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧