日期:2014-05-16  浏览次数:20444 次

手动向mysql数据库插入数据,hibernate查询出来没有新插入数据,如何解决?(原创)

数据库:mysql

取数据:hibernate?:

?? public List ?findAll() {
??????? Query query = session.createQuery("from user");
??????? return query.list();
??? }

我使用mysql的界面管理工具,向其中插入一条数据,在不重新启动服务器的时候,刷新页面,新插入的数据不显示。

使用hibernate的add方法添加进去的,刷新页面可以显示。

?

?

尝试:

1.将hibernate的配置文件中加入二级缓存关闭的配置

2.在hibernate里的add、findAll的方法里加入session.flush();session.evit(obj);session.clear();(清除一级缓存)

3.使用dos界面,进入mysql,insert 数据,然后commit

?

?

都不管用,必须重新启动tomcat,新数据才出来。

?

?

最后,偶然在iteye上看到个帖子:

解决了我好几天纠结的问题:

在调用findAll方法的action里加入事务提交:
public String init() {

? List users= service.listAllUser(session);
??session.getTransaction().commit();

}

这样,使用mysql管理界面手动插入的数据,刷新页面的时候,就可以显示出来了。