如何在ssh框架和activemq下调用dao层的插入方法

我的项目是基于ssh框架开发的,想使用activemq服务器,希望在监听方中的onMessage方法里面,当监听到消息时调用该项目中dao层的add方法进行插入用户信息,... 我的项目是基于ssh框架开发的,想使用activemq服务器,希望在监听方中的onMessage方法里面,当监听到消息时调用该项目中dao层的add方法进行插入用户信息,add方法测试中可以进入,应该是调用成功,但是却无法正常插入数据,数据库表是空的,但也不报错。
如果调用的是dao层的查询方法,是可以进行查询动作的。所以排除了spring未实例化的这个问题。
那么是否还要做什么动作才能够正常调用了??
插入方法是没有问题的,在action层调用可以插入,和字段冲突无关
插入时的方法是使用super.getsession().save()方法插入的,我觉得是和session有关,改为用getHibernateTemplate().save()的方法就可以正常插入
请问具体原因是什么呢??
展开
 我来答
必杀语
2010-02-28 · TA获得超过394个赞
知道小有建树答主
回答量:254
采纳率:100%
帮助的人:350万
展开全部
根据你的描述,大概明白你的意思了,弱弱的问一下你的add真的插入成功了吗?我觉得你再试一试,因为你所用的getSession()方法只是得到hibernate的session,而session本身没有transaction不能插入,这是Hibernate中明确的,查看HibernateSupportDao的API可以发现
Obtain a Hibernate Session, either from the current transaction or a new one. The latter is only allowed if the "allowCreate" setting of this bean's HibernateTemplate is "true".
意思是,不论从当前的Transaction还是新的Transaction,spring只返回一个session,你用的ssh,单独用过hibernate和spring吗?hibernate中session.save(OBJ)还需要提供一个transaction.commit()的方法,而session中createQuery方法在不提供transaction的时候只能进行查询,不能进行修改,插入和删除。
而HibernateTemplate不一样,HibernateTemplate出现在spring中,spring将HibernateTemplate封装为HibernateSupportDao实例,所以这个HibernateTemplate包括一切Hibernate,而不仅仅只是Session。

关于BaiduHi的补充
在session.save()时,hibernate会认为这是一个事务(transaction),如果之前没有事务,这个save是不可能成功的,必须通过session.beginTransaction()创建一个事务,因为没有事务意味着不能进行操作,可能由于你测试时其他原因,有了相应的事务,所以不需要再提供事务。(个人猜想)
请参照Hibernate API
LHLBT3GOOD
2010-02-24 · TA获得超过546个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:533万
展开全部
我也遇到过这样的问题

我当时的原因是我的实体bean里面的属性名字和数据库里面的保留字冲突!

比如 private Date date; 恰好数据库里面有个保留字也叫date!

所以插不进,又不报错!

你检查一下啊,建议实体bean都加个前特定前缀什么的 em_name 、 em_date

祝你成功
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式