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()方法但是也不好用,不知道怎么弄了,有高手指点一下没???
...全文
144 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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。
把两个文件的类型改为一致就可以了。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧