学习Hibernate碰到的问题以及解决问题的方法(长期更新)

星期一 2007年08月06日

学习Hibernate碰到的问题以及解决问题的方法(长期更新)

 

2007-8-6遇到的问题:

1. Exception in thread "main" org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.zqdu.ec.hibernate.NetManager.id
原因:对应bean中set方法数据类型和hibernate配置文件中定义的类型是否一致。

2.Exception in thread "main" org.hibernate.StaleStateException: Unexpected row count: 0 expected: 1
 at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:27)
 at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2204)
 at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2118)
 at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2374)
 at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:91)
 at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
 at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
 at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
 at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
 at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
 at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
 at com.zqdu.ec.hibernate.NetManageOperate.upDate(NetManageOperate.java:45)
 at com.zqdu.ec.hibernate.TestM.main(TestM.java:14)

原因是更新的对象在数据就本根中库没有对应的记录,解决办法是检查一下对象的id是否正确,或者在调用upDate(data)中,加入data.set("测试值"),其中测试值必须和数据库中需更新的记录的主键ID一样!用此方法,测试通过,不再抛这个异常。

2007-8-13

1.Exception in thread "main" org.hibernate.HibernateException: No CurrentSessionContext configured!
 at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:506)
 at com.zqdu.ec.util.HibernateDAO.getSession(HibernateDAO.java:120)
 at com.zqdu.ec.util.HibernateDAO.getObject(HibernateDAO.java:91)
 at com.zqdu.ec.dao.hibernate.NetPollDAOImpl.findPollById(NetPollDAOImpl.java:36)
 at com.zqdu.ec.test.TestPoll.main(TestPoll.java:20)
解决方法:

在hibernate.cfg.xml中加入:

 

< property  name ="current_session_context_class" > thread </ property >

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值