首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Hibernate flush有关问题

2012-07-29 
Hibernate flush问题在hibernate清除session数据到数据库的时候,有3种方法:事务commit的时候;数据get()出

Hibernate flush问题
在hibernate清除session数据到数据库的时候,有3种方法:
事务commit的时候;
数据get()出来之前;
还有调用session.flush()的时候;

但是我的程序只有事务commit的时候才可以,其他都无效,大家有没有出现这样的情况?有什么办法修改吗?是什么原因?

[解决办法]
flush是强行清除session缓存,不会提交事务,数据要持久化必须要commit。
[解决办法]
楼上 所言极是

flush 是强制 清理缓存 强制同步
并不会 提交事务 
必须 你commit

[解决办法]

探讨
flush是强行清除session缓存,不会提交事务,数据要持久化必须要commit。

[解决办法]
不清楚你的问题,看看代码才好,执行flush()方法的时候,Hibernate 清理缓存,发出hql,其实这时候数据库已经有数据,只是由于数据库本身的隔离级别的问题,一般数据库都默认看不到的,必须等commit()以后才可以看到,可以通过设置隔离级别,看到数据,但这是不安全的,有可能回滚的数据
[解决办法]
这没有提交吧.
[解决办法]
按这个应该可以呀 怪了 关注

[解决办法]
不执行flush()方法的时候,Hibernate 清理缓存,发出hql,其实这时候数据库已经有数据,只是由于数据库本身的隔离级别的问题,一般数据库都默认看不到的,必须等commit()以后才可以看到,可以通过设置隔离级别,看到数据;

--> 你在后台设置隔离级别的为 未提交读,既可以看到你flush过的数据
--> 我用的是mysql数据库 设置隔离级别是 

mysql> select @@tx_isolation;(查看隔离级别)
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+

mysql> set transaction isolation level read uncommitted;(设置隔离级别为 未提交读)
Query OK, 0 rows affected

mysql> select @@tx_isolation;(查看隔离级别)

+------------------+
| @@tx_isolation |
+------------------+
| READ-UNCOMMITTED |
+------------------+

然后 你再select你的数据 即可看到!






热点排行