ejb查询问题

westdo 2003-03-18 02:34:59
数据库:Oracle8.17
在我的数据库表中存在status=1的记录,status的类型是char(2);我在(CMP)实体bean中查找status=1的记录,没有找到。但在sql-plus中能找到,
是不是我的字段定义的有问题?
如果要找到记录,应该怎么做比较好?
是不是oracle中的char,varchar2类型的字段在用java程序中查找都要加like?
...全文
117 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
westdo 2003-03-19
  • 打赏
  • 举报
回复
我传参时用String类型了,就是出不来结果
yabbi21 2003-03-19
  • 打赏
  • 举报
回复
给findByStatus方法传参数时,假设查找Status='1'的对象,
则传参时用String类型,如...findByStatus("1");
yabbi21 2003-03-19
  • 打赏
  • 举报
回复
QL看上去没有错误。
要确认以下几点:
测试客户端的程序中的接受类型是否与QL返回相容
如果QL返回的是Collection类型,注意正确转换
westdo 2003-03-19
  • 打赏
  • 举报
回复
再没有人来帮我吗?
westdo 2003-03-19
  • 打赏
  • 举报
回复
我的QL语句:select object(c) from CarInfo AS c where c.status = ?1
CarInfo是我的实体bean名称
部署文件片段如下:
<entity>
<display-name>CarInfo</display-name>
<ejb-name>CarInfo</ejb-name>
<local-home>carmanager.CarInfoHome</local-home>
<local>carmanager.CarInfo</local>
<ejb-class>carmanager.CarInfoBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>CarInfo</abstract-schema-name>
<cmp-field>
<field-name>color</field-name>
</cmp-field>
<cmp-field>
<field-name>status</field-name>
</cmp-field>
<cmp-field>
<field-name>notes</field-name>
</cmp-field>
<cmp-field>
<field-name>carID</field-name>
</cmp-field>
<cmp-field>
<field-name>unitName</field-name>
</cmp-field>
<cmp-field>
<field-name>fType</field-name>
</cmp-field>
<cmp-field>
<field-name>engineNO</field-name>
</cmp-field>
<cmp-field>
<field-name>frameNO</field-name>
</cmp-field>
<cmp-field>
<field-name>lDate</field-name>
</cmp-field>
<cmp-field>
<field-name>licenceNO</field-name>
</cmp-field>
<primkey-field>carID</primkey-field>
<query>
<query-method>
<method-name>findByStatus</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>select object(c) from CarInfo AS c where c.status = ?1</ejb-ql>
</query>
<query>
<query-method>
<method-name>findAll</method-name>
<method-params />
</query-method>
<ejb-ql>select object(o) from CarInfo o</ejb-ql>
</query>
</entity>
为什么会找不到记录呢?
mg999 2003-03-19
  • 打赏
  • 举报
回复
是不是应该这样:status='1 '
zez 2003-03-19
  • 打赏
  • 举报
回复
等号前后有空格
westdo 2003-03-19
  • 打赏
  • 举报
回复
问题解决了。原来在Oracle中定义Char(x)类型时如果插入的数据不足x位,会在后面加空格,结果用CMP实体bean查不出.
yabbi21 2003-03-19
  • 打赏
  • 举报
回复
仔细检查客户端调用findByStatus(...)方法的地方,注意每一个细节。
或者你把那段代码贴上来,出错信息是什么?
laurazdm 2003-03-19
  • 打赏
  • 举报
回复
你的数据库中该字段定义了char(2),是不是有怪字符在数据库中啊?
wdman 2003-03-18
  • 打赏
  • 举报
回复
gz
westdo 2003-03-18
  • 打赏
  • 举报
回复
本来就是String 类型的
zez 2003-03-18
  • 打赏
  • 举报
回复
QL语句对吗?
看你的xml-jar.xml里,status对应的类型是什么 ?
如果是Object,改为String ...

67,512

社区成员

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

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