关于cmp的问题!Mastering EJB 第七章的问题!

时间:2022-03-20 16:23:51
我按照mastering ejb的第7章做了一个product 的demo,用cmp操作数据库中的表product,product有四个字段,productID,description,baseprice,name,用的工具是jbuilder8.0。
但是当我调试的时候发现能create()返回一个EJB对象,而且用findByPrimaryKey()也能查找到,在ejbLoad(),和ejbStore()打印出的信息可以知道,每调用一次set或get方法都会调用ejbLoad和ejbStore但数据库中却没有信息,我把jboss关掉重开,还是没有,请问这是为什么??

11 个解决方案

#1


不是吧,好像得调用ejbStroe才能存到数据库里

#2


老兄,ejbStore()是容器调用的!!从服务的输出来看它确实调用了但关键问题是没有把数据存到数据库里!

#3


有没有人知道啊!!

#4


up!

#5


http://expert.csdn.net/Expert/topic/1833/1833652.xml?temp=.868664

#6


你说的这种情况不会出现。
如果数据库中无表,CMP操作不可能成功返回。

原因或许是你察看的数据库表不是实际容器关联的那个。
你仔细确认你察看的表是否是对应你的CMP的!
确认你检查的数据库用户是否是你的CMP使用的!
(还有你在部署时是否选择了自动创建表,如果那样的话某些厂商的EJB容器会用自己的命名方式自动为你创建表)


#7


看看你自己jboss对数据库的mapping最否对应。通常这类问题是ejb指定的field与database的字段不对应,就会出现你这种情况。

#8


如果你没绑定数据源会使用默认得数据源,而且会为你临时创建一个product的表。你在JBoss端的输出查看一下是否有说创建了临时表product或是说product已经创建的语句,那么就是用了默认得数据源了

#9


你用的是什么数据库?
我用的是 Apusic + MS SQL SERVER 2000,能存取数据库.

#10


看看应射是否正确,按说不会出现这种错误。

#11


<<mastering ejb>>中的这个例子我以前用weblogic+mysql做过,你注意书中的例子只是为了演示,最后它把生成的ejb都给remove了,remove意味着数据库中的记录也被delete了,同时ejb本身进入bean pool,如果不remove哪个ejb,那么与之相对应的表中的数据也就存在,cmp与database records是视图的关系,是一体的,不知道我说清楚没有.

#1


不是吧,好像得调用ejbStroe才能存到数据库里

#2


老兄,ejbStore()是容器调用的!!从服务的输出来看它确实调用了但关键问题是没有把数据存到数据库里!

#3


有没有人知道啊!!

#4


up!

#5


http://expert.csdn.net/Expert/topic/1833/1833652.xml?temp=.868664

#6


你说的这种情况不会出现。
如果数据库中无表,CMP操作不可能成功返回。

原因或许是你察看的数据库表不是实际容器关联的那个。
你仔细确认你察看的表是否是对应你的CMP的!
确认你检查的数据库用户是否是你的CMP使用的!
(还有你在部署时是否选择了自动创建表,如果那样的话某些厂商的EJB容器会用自己的命名方式自动为你创建表)


#7


看看你自己jboss对数据库的mapping最否对应。通常这类问题是ejb指定的field与database的字段不对应,就会出现你这种情况。

#8


如果你没绑定数据源会使用默认得数据源,而且会为你临时创建一个product的表。你在JBoss端的输出查看一下是否有说创建了临时表product或是说product已经创建的语句,那么就是用了默认得数据源了

#9


你用的是什么数据库?
我用的是 Apusic + MS SQL SERVER 2000,能存取数据库.

#10


看看应射是否正确,按说不会出现这种错误。

#11


<<mastering ejb>>中的这个例子我以前用weblogic+mysql做过,你注意书中的例子只是为了演示,最后它把生成的ejb都给remove了,remove意味着数据库中的记录也被delete了,同时ejb本身进入bean pool,如果不remove哪个ejb,那么与之相对应的表中的数据也就存在,cmp与database records是视图的关系,是一体的,不知道我说清楚没有.