郁闷!cmp中的finder method在client调用时老是出问题(jbuilder7+weblogic7)

Ljglory 2002-11-16 11:09:27
在jbuilder7 + weblogic7下调试cmp,
用weblogic部署cmp都正常,并且在jbuilder生成的ejb test client
中调用create也没问题,
但是每当用findByOwnername

[findByOwnername我定义的一个finder method,用于返
回用户名等于输入参数时的remote object]

[相应的ejb-ql为:
select object(a) from Account a where a.ownername = ?1]

时,结果总是出现下面的异常:
java.sql.SQLException: No data found
java.sql.SQLException: No data found
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6212)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3266)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:
5398)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:326)

at weblogic.jdbc.jts.ResultSet.getString(ResultSet.java:84)

at weblogic.jdbc.rmi.internal.ResultSetImpl.getString(ResultSetImpl.java
:178)
... ...
...全文
23 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ljglory 2002-11-21
  • 打赏
  • 举报
回复
问题终于解决了,是java.sun.com上的一位网友解答的;

要把ejb-ql改写为:

<![CDATA[select object(a) from Account a where (a.ownername = ?1)]]>

但是不能在jbuilder的finder method属性面板中改,只能到ejb dd source中手动改,并且不能在切换到finder method属性面板中去,应为jbuilder会自动把你写的ejb-ql改回成:
select object(a) from Account a where (a.ownername = ?1)

应该是jbuilder的一个bug吧!

还有,我只用了borland自己提供的jdbc driver才调通了,用sun的jdbc:odbc和weblogic for sql server都不行,我就不知道是怎么回事了。

结贴!参与都有分!
Ljglory 2002-11-18
  • 打赏
  • 举报
回复
请看我的测试程序的main函数(框架由JBuilder7生成)

try{
AccountTestClient client = new AccountTestClient();
client.create("2002-121","new",1099);
//client.findByName("new");
//client.setOwnername("new_m");
}
catch(Exception e){
System.out.println(e);
}

我先执行此测试程序,等数据生成后(经过查询分析器验证),再把create语句注释调,使用create下面的两行语句测试,结果竟然还是
No data found!

Ljglory 2002-11-18
  • 打赏
  • 举报
回复
To:kexsong(大可)
可是数据库中真的有我要查的这条记录! 并且今天我在另外一台机器上试了一下,还是同样的结果!

To:knight_qmh(辉)
我试了,可是还是不行,你以前碰到过类似的情况吗?把char改为varchar就行了吗?

还有,谢谢两位!
knight_qmh 2002-11-18
  • 打赏
  • 举报
回复
a.ownername 字段如果为char型多有这种问题,可改为varchar
kexsong 2002-11-18
  • 打赏
  • 举报
回复
ejb_ql的编写是比较符号两边是要留空格的,这是要注意的。
从你的错误提示中:
java.sql.SQLException: No data found
java.sql.SQLException: No data found
可以知道,你的查询结果是空的啊,所以当然提示错误了,因为实体bean的实例对象的唯一标志就是它对应的数据表的一条记录啊。如果记录为空,那么,你想生成的实体bean实例还能存在吗?所以在有之中情况出现的时候,我们在定义一个自己的异常去抛出“记录为空”的字样。
你试试有记录的情况吧
Ljglory 2002-11-17
  • 打赏
  • 举报
回复
还是不行,左右都不留空格时或是只有右边留空格时,编译通不过;
     仅仅左边留空格时,还是“no data found”。
Luke_cn 2002-11-17
  • 打赏
  • 举报
回复
a.ownername = ?1等浩号左右不要有空格,试试看
Ljglory 2002-11-16
  • 打赏
  • 举报
回复
jery,不会的,我用的是个小数据库,为防止眼睛看花了,我还用不同的数据作了测试,呵呵。

谢谢你的参与!
jery_lee 2002-11-16
  • 打赏
  • 举报
回复
select object(a) from Account a where a.ownername = ?1
?1 是不是错了?
是不是数据库中没有数据》
Ljglory 2002-11-16
  • 打赏
  • 举报
回复
好像没人,自己顶一下!

1,221

社区成员

发帖
与我相关
我的任务
社区描述
企业软件 中间件技术
社区管理员
  • 中间件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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