求助:CMP2.0中有关findXXX方法的问题

weya 2003-04-05 09:17:56
开发环境: jb8 + jboss3.0.6 + tomcat4.1.18

我在CMP2.0 entity bean中定义了一个findAll()方法,并写了相应的EJB-QL语句,在jsp页面中使用该实体bean,可是总是返回一个空Collection(不是null,是coll.isEmpty()返回为true),我不知道该如何下手去查错,请高手帮帮忙吧。


下面是findAll的申明和相关的EJB-QL语句,该实体bean名为Product,abstract schema name 也是Product。

public Collection findAll() throws FinderException;
select OBJECT(p) from Product p

另外,关于findByPrimaryKey的问题,如果我数据库中表的主键是int类型的,那么在部署描述符中的<prim-key-class>字段该怎么写呢?写int应该是不行的,因为不是类,但要是写Integer的话,容器能够识别吗?
...全文
44 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
weya 2003-04-15
  • 打赏
  • 举报
回复
没有搞定,现在竟然连调用findAll都出空指针异常了。郁闷……

算了,结帖先!
MyXin 2003-04-12
  • 打赏
  • 举报
回复
在jboss-3.0.6_tomcat-4.1.18\docs\examples\jca下。文彦,还没有搞定吗?
MyXin 2003-04-12
  • 打赏
  • 举报
回复
你得拷贝这个文件到你的deploy下,她在doc下。
weya 2003-04-12
  • 打赏
  • 举报
回复
奇怪,我也是用mysql的,怎么没有mysql_servive???

楼上的,能说一下为什么你建议不使用EJB QL吗?
weya 2003-04-10
  • 打赏
  • 举报
回复
MyXin(清晨,迎面吹来了凉爽的风) ,说一下是怎么回事吧
zergtao 2003-04-10
  • 打赏
  • 举报
回复
建议不要使用EJB QL
MyXin 2003-04-10
  • 打赏
  • 举报
回复
还是jboss和数据库的连接出问题了!我想我们出的问题都差不多,就说说我解决的地方吧:

No.1 在jboss下的default/deploy下的mysql_servive(我的数据库是MySQl)下修改:
<depends optional-attribute-name="ManagedConnectionFactoryName">
<!--embedded mbean-->
<mbean code="org.jboss.resource.connectionmanager.RARDeployment" name="jboss.jca:service=LocalTxDS,name=yourDataSource">

<attribute name="JndiName">yourDataSource</attribute>

<attribute name="ManagedConnectionFactoryProperties">
<properties>
<config-property name="ConnectionURL" type="java.lang.String">jdbc:mysql://localhost/windy</config-property>
<config-property name="DriverClass" type="java.lang.String">org.gjt.mm.mysql.Driver</config-property>
<!--set these only if you want only default logins, not through JAAS -->
<config-property name="UserName" type="java.lang.String">root</config-property>
<config-property name="Password" type="java.lang.String"></config-property>
</properties>

</attribute>

No2. 在创建的EJB中设置jbosscmp-jdbc和jboss3.xProperties属性:

datasource: java:/yourDataSource
datasource-mapping: mySQL //数据库类型,可换成你自己的。如Sysbese


No3. 如果你以前编译过,请删除Bak和Classes文件夹从新编译,才能在jar包中的jbosscmp-jdbc文件中看到
datasource: java:/yourDataSource
datasource-mapping: mySQL

好。就这些,还有问题可以问我
weya 2003-04-09
  • 打赏
  • 举报
回复
好像是jboss和jbuilder整合的那个插件有问题,它把生成的数据都写作一个文件里,没写进数据库,所以在数据库里查找会找不到。

to MyXin(清晨,迎面吹来了凉爽的风) ,你是怎么解决这个问题的?我已经加你了,希望以后多多讨论,共同进步。
MyXin 2003-04-08
  • 打赏
  • 举报
回复
没有啊!我现在不管CMP了,干脆只用SessionBean。哎!网上那么多文章,我都试了!强烈希望能有cmp与jboss与mysql的详细安装步骤和部署步骤!!!!晕阿!!Csdn上那几个星号的是否不用jboss阿!
fan_zh 2003-04-08
  • 打赏
  • 举报
回复
MyXin(清晨,迎面吹来了凉爽的风):
我遇到的问题和你的一样,你的解决了吗?
fan_zh 2003-04-08
  • 打赏
  • 举报
回复
gz
richardluopeng 2003-04-08
  • 打赏
  • 举报
回复
关注
MyXin 2003-04-08
  • 打赏
  • 举报
回复
是的。发布EJB并不出错,我只是简单的生成了一个CMP,没有添加其他方法。JBOSS中EJB的
联系的数据库是否并不与原数据库关联?他从新生成了一个数据库,而且数据文件存在服务器里,我不清楚,急盼高手指点阿!!!!!!
MyXin 2003-04-08
  • 打赏
  • 举报
回复
算了!加我QQ,26251433。大家以后常讨论!
MyXin 2003-04-08
  • 打赏
  • 举报
回复
to weya (文彦) , fan_zh(无言):
我终于成功解决了!告诉我你们的E_mail我发给你们。实在是不想写那么长了!成功了给我100分,我激动阿!!!好几天的问题终于解决了!!!
MyXin 2003-04-07
  • 打赏
  • 举报
回复
我也是同样的问题,我只是简单的findByPrimaryKey(),找不到数据阿!"Find no such Entity".
驱动是org.gjt.mm.mysql.Driver.
而且我用create创建的数据根本不出现在数据库中,但用findByPrimaryKey()就可以找到!而且,肯定存在某个地方。因为重起服务器还能用findByPrimaryKey()找到。但数据库中就找不到,我怀疑是JBOSS与MySQL的配置问题,请知道的朋友告诉我!!!
zijun28 2003-04-07
  • 打赏
  • 举报
回复
你用的数据库驱动是什么。

JDBC-ODBC桥?还是其他的数据库驱动,以前遇见过类似情况,最终是由于使用JDBC-ODBC桥的原因。后来使用别的驱动程序就没有这种情况了。
weya 2003-04-07
  • 打赏
  • 举报
回复
我用的也是org.gjt.mm.mysql.Driver。jboss运行时并没有提示我ejb-ql有错,我想ejb-ql应该没写错。我现在也怀疑是jboss与mysql的配置问题,有谁在jb8+jboss+mysql环境下成功的实现过cmp2.0吗?
bearning 2003-04-07
  • 打赏
  • 举报
回复
上面的解释有误:见书<Enterprise JavaBean 3rd>

when null fields appear in comparsion operations such as IN and BETWEEN, they can have side effects. In most cases, evluating a null field in a comparison operation (other than IS NULL) produces in an UNKNOW result. Unknow evaluations throw the entire EJB QL result set into question; since we cannot predict the outcome of the EJB QL statement, it unreliable. One way to avoid this situation is to require that fields used in the expressions have values.....This require careful programming. To ensure that an entity bean field is never null, you must initialize the field when the entity is created. for primitive values, this not a problem; they have default values, so they cannot null. other fields, such as single CMR fields and object-based CMR fields such as String, must be initialized in the ejbCreate() and ejbPostCreate() methods.




bearning 2003-04-06
  • 打赏
  • 举报
回复
p.id? 它是你在ejb-jar.xml文件中的主键域吗?
.
..
...
<cmp-field>
<field-name>productID</field-name>
</cmp-field>
....

加载更多回复(5)

67,515

社区成员

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

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