hibernate 缓存问题(在线等)

stevenzxl 2010-09-29 04:17:16
我使用ssh框架,做一个循环插入数据库,第一次成功了,第二次失败了
出错是:系统运行错误提示:identifier of an instance of com.fibrlink.indicatormanage.model.Indicator was altered from 402893932b51f8ca012b51fb7d390003 to 402893932b51f8ca012b51fb7d390002
这个应该是hibernate 缓存机制造成的问题,如何把缓存清掉然它多次执行??
我调用的saveOrUpdate()方法。之后我又调用了flush()方法但是也不好用,不知道怎么弄了,有高手指点一下没???
...全文
104 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xingyanfeng775 2010-09-30
先清空缓存 分多次提交
回复
wsw0125 2010-09-30
是不是你的session关闭了啊,一级缓存又叫session级缓存,和session的生命周期是一样的.二级缓存是sesionfactory级缓存.
回复
stevenzxl 2010-09-30
没有高手帮我解决啊。
我在前面调用了
getSession().fluse();
getSession().clear();
按理应该好用了啊,但是为什么提示could not initialize proxy - no Session
是不是配置文件的问题???????
回复
hbu_zhy 2010-09-30
可能是没commit()造成的。
回复
hbu_zhy 2010-09-30
估计是主健重复或id生成策略的问题。检查下。
回复
stevenzxl 2010-09-30
自己解决了哈哈
回复
stevenzxl 2010-09-30
[Quote=引用 9 楼 ibm_hoojo 的回复:]
引用楼主 stevenzxl 的回复:
我使用ssh框架,做一个循环插入数据库,第一次成功了,第二次失败了
出错是:系统运行错误提示:identifier of an instance of com.fibrlink.indicatormanage.model.Indicator was altered from 402893932b51f8ca012b51fb7d390003 to 4028……
[/Quote]
配置了
<!-- 事务管理器配置,单数据源事务 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"
ref="pxptDataSource" /> </bean> -->
<!-- 事务管理器配置,多数据源JTA事务 -->
<!-- <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager or WebLogicJtaTransactionManager"
/> -->

<context:annotation-config />

<!-- 使用annotation定义事务 支持 @Transactional -->
<!-- tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /> -->
<tx:annotation-driven transaction-manager="transactionManager" />
配置文件,帮我看看有什么问题吗?
回复
stevenzxl 2010-09-30
[Quote=引用 6 楼 wsw0125 的回复:]
是不是你的session关闭了啊,一级缓存又叫session级缓存,和session的生命周期是一样的.二级缓存是sesionfactory级缓存.
[/Quote]

我没调用过getSession().close()方法啊,难道是封装的方法里面调用了?我也看不到里面的内容怎么办呢
回复
hoojo 2010-09-30
[Quote=引用楼主 stevenzxl 的回复:]
我使用ssh框架,做一个循环插入数据库,第一次成功了,第二次失败了
出错是:系统运行错误提示:identifier of an instance of com.fibrlink.indicatormanage.model.Indicator was altered from 402893932b51f8ca012b51fb7d390003 to 402893932b51f8ca012b51fb7……
[/Quote]
有没有配置事务,spring配置管理你的事务
回复
stevenzxl 2010-09-30
[Quote=引用 7 楼 xingyanfeng 的回复:]
先清空缓存 分多次提交
[/Quote]
怎么做,你的思路和我的一样,但是我还没实现
回复
stevenzxl 2010-09-29
[Quote=引用 2 楼 zhenge1020 的回复:]
在saveOrUpdate前getSession().clear()试试?
[/Quote]

这个方法不行,session都没了。。。系统运行错误提示:could not initialize proxy - no Session
回复
stevenzxl 2010-09-29
[Quote=引用 1 楼 frank351 的回复:]
此异常的产生主要是pojo中的类中的属性的类型和映射文件中属性的类型不能一一对应。
比如:ID的属性在类中使用的LONG,但是在映射文件却是Integer。
把两个文件的类型改为一致就可以了。
[/Quote]

哥,你确认你回答的是我的问题?
回复
zhenge1020 2010-09-29
在saveOrUpdate前getSession().clear()试试?
回复
太阳峰 2010-09-29

此异常的产生主要是pojo中的类中的属性的类型和映射文件中属性的类型不能一一对应。
比如:ID的属性在类中使用的LONG,但是在映射文件却是Integer。
把两个文件的类型改为一致就可以了。
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2010-09-29 04:17
社区公告
暂无公告