精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-03
以前没有遇到过,因为以前没有用spring。 下面service层代码: java 代码
junit测试代码: java 代码
执行时:根本没有保存进行,并且也没有在控制台看到:update语句 service代码改写成: java 代码
就更新成功了。 很奇怪,难道不去判断对象被弄脏了吗? 注意用的版本是:hibernate 3.2.5ga ,spring2.0.6 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-09-03
hibernate没有被spring进行事务管理吧.导致commit()这个方法没有被执行,不知道是不是这样?小弟只是猜测一下而已.
|
|
返回顶楼 | |
发表时间:2007-09-04
事务已经管理起来了,事实上上面的代码是可执行的,但在web应用下同样的代码不能执行,还在找原因
|
|
返回顶楼 | |
发表时间:2007-10-23
经过多次测试,这个bug确实存在,如在eclipse调式下,我在Expressions中手增加了ob.getName();注意在保存之前进行这样的操作,然后在查看相就的ob实体变量,估在hibernate代理变量中的target中的相应name变量为更新,如果我有新的成员变量name1,没有像上面的操作,name1仍然是原值,根本没有弄脏.
不知道有没有人遇到过相关问题? |
|
返回顶楼 | |
发表时间:2007-10-23
我遇到过,跟你的情况一摸一样,不过原因正像 Fly_m 说的那样,事务没有提交。
|
|
返回顶楼 | |
发表时间:2007-10-24
Fly_m 写道 hibernate没有被spring进行事务管理吧.导致commit()这个方法没有被执行,不知道是不是这样?小弟只是猜测一下而已.
问题解决了吗?对于这个问题我建议你先去看看配置文件,然后再看看那个DAO的SAVE方法,这样估记能找一解题的思路,谢谢 |
|
返回顶楼 | |
发表时间:2007-10-25
测试用例继承了Spring提供的AbstractTransactionalDataSourceSpringContextTests基类了吧?
每次更新操作后都执行一下hibernate提供的flush()方法就可以了 否则hibernate会耍滑头不将更新提交到数据库(也许是为了效率) |
|
返回顶楼 | |
发表时间:2007-10-25
用hsqldb作为测试库。一重启所有的重新来过。
|
|
返回顶楼 | |
发表时间:2007-10-28
其实我上面只是举了一例子,用String可能不存在,主要是因为Character引起的.
在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都是同样的错误. |
|
返回顶楼 | |
发表时间:2007-10-29
我也觉得是 hbm文件 和POJO类 有问题 你检查一下这里喽。。。
|
|
返回顶楼 | |