2007-09-03
一个怪异的hibernate保存实体失败问题
关键字: hibernate以前没有遇到过,因为以前没有用spring。
下面service层代码:
java 代码
- public boolean updateOrderBill(Long id) {
- OrderBill ob = this.getOrderBillDao().getOrderBill(id);
- ob.setName(ob.Name()+"1");
- getOrderBillDao().saveOrderBill(ob);
- return true;
- }
junit测试代码:
java 代码
- @Test
- public void testReservFailed(){
- orderBillService.updateOrderBill(Long.valueOf(12530));
- OrderBill ob = orderBillService.getOrderBill(Long.valueOf(12530));
- System.out.println(ob.getName());
- }
执行时:根本没有保存进行,并且也没有在控制台看到:update语句
service代码改写成:
java 代码
- public boolean updateOrderBill(Long id) {
- OrderBill ob = this.getOrderBillDao().getOrderBill(id);
- ob.setHotelName(ob.getName()+"1");
- getOrderBillDao().excuteUpdate("update OrderBill as obj set obj.name='"+ob.getName()+"1"+"' where obj.orderBillId="+id);
- return false;
- }
就更新成功了。
很奇怪,难道不去判断对象被弄脏了吗?
注意用的版本是:hibernate 3.2.5ga ,spring2.0.6
- 21:22
- 浏览 (1345)
- 论坛浏览 (2481)
- 评论 (10)
- 相关推荐
评论
其实我上面只是举了一例子,用String可能不存在,主要是因为Character引起的.
在hibernate的CharacterType里执行下面这个函数报空指针异常,而真正报的时oracle驱动内部的异常.
这里,value值是'7'时指这个空指针,还是直接new新对象保存时,没有出错,从数据库获取对象后,部份字段弄脏以后save就这个错误,难道真是oracle驱动问题,用了classes12.jar和classes14.jar都是同样的错误.
在hibernate的CharacterType里执行下面这个函数报空指针异常,而真正报的时oracle驱动内部的异常.
public void set(PreparedStatement st, Object value, int index) throws SQLException {
st.setString( index, (value).toString() );
}
这里,value值是'7'时指这个空指针,还是直接new新对象保存时,没有出错,从数据库获取对象后,部份字段弄脏以后save就这个错误,难道真是oracle驱动问题,用了classes12.jar和classes14.jar都是同样的错误.
测试用例继承了Spring提供的AbstractTransactionalDataSourceSpringContextTests基类了吧?
每次更新操作后都执行一下hibernate提供的flush()方法就可以了
否则hibernate会耍滑头不将更新提交到数据库(也许是为了效率)
每次更新操作后都执行一下hibernate提供的flush()方法就可以了
否则hibernate会耍滑头不将更新提交到数据库(也许是为了效率)
Fly_m 写道
hibernate没有被spring进行事务管理吧.导致commit()这个方法没有被执行,不知道是不是这样?小弟只是猜测一下而已.
问题解决了吗?对于这个问题我建议你先去看看配置文件,然后再看看那个DAO的SAVE方法,这样估记能找一解题的思路,谢谢
经过多次测试,这个bug确实存在,如在eclipse调式下,我在Expressions中手增加了ob.getName();注意在保存之前进行这样的操作,然后在查看相就的ob实体变量,估在hibernate代理变量中的target中的相应name变量为更新,如果我有新的成员变量name1,没有像上面的操作,name1仍然是原值,根本没有弄脏.
不知道有没有人遇到过相关问题?
不知道有没有人遇到过相关问题?
发表评论
该博客是同时发布到论坛的,无法评论在论坛已被锁定的帖子
我的相册
DSC00526
共 40 张
共 40 张
链接
最新评论
-
JBOSS应用服务器下载地址
laji,bu gei ge juti de!
-- by solejava -
自己写的Struts2.0+hibern ...
实体是从hibernate生成的hbm.xml文件
-- by sys53 -
自己写的Struts2.0+hibern ...
兄弟,搞个说明文档撒。。。 再搞几个截图更好。。。 就一个exe文件,运行起来 ...
-- by weiweichen1985 -
myeclipse6.0注册码收藏
能用啊 谢谢
-- by 349317925 -
Struts2 文本域中数值格化 ...
<s:textfield key="orderItem.price" va ...
-- by sys53







评论排行榜