Hibernate 无法访问 phpMyAdmin 插入的数据
Posted
技术标签:
【中文标题】Hibernate 无法访问 phpMyAdmin 插入的数据【英文标题】:Hibernate cannot access data inserted by phpMyAdmin 【发布时间】:2014-08-28 10:58:51 【问题描述】:我的问题是关于休眠的,实际上我正在使用休眠和 mysq 开发 Java EE 应用程序。
一切看起来都很好。但是当我通过 phpMyAdmin 将数据插入我的数据库时,我仍然遇到一个问题,除非我再次启动服务器(tomcat),否则我无法通过休眠立即访问它们。
【问题讨论】:
请发布有关 phpMyAdmin 更新查询、Tomcat 选择查询和数据库连接详细信息的详细信息。 我确实从互联网上的一些文章中了解到它是关于休眠二级缓存的,但我不知道如何修复它 尝试搜索清除休眠缓存的技术,这可能对docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/…有帮助。 【参考方案1】:这是因为您在 phpMyAdmin 中的事务未提交。
在运行命令之前尝试在 phpMyAdmin 中运行此查询。
SET @@AUTOCOMMIT = 1;
或者在查询结束时运行commit;
。
可能重复: COMMIT not working in phpmyadmin (mysql)
【讨论】:
感谢您的回答,我按照您的要求做了,但仍然无法正常工作,除非我再次启动 tomcat,否则我无法从我的 java 应用程序访问数据 很高兴我提出的关于提交您的问题的建议对您有所帮助。【参考方案2】:我注意到我忘记为每个休眠 session.get(); 方法添加 transaction.commit();,所以它以某种方式将数据保存在缓存中。
public List<User> getAllUsers(User user) throws Exception
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = null;
try
tx = session.beginTransaction();
Criteria c = session.createCriteria(User.class).add(Restrictions.ne("idUser", user.getIdUser()));
List<User> users = c.list();
tx.commit();//i forget to add this
return users;
catch (Exception e)
if (tx != null) tx.rollback(); throw e;
finally
session.close();
【讨论】:
以上是关于Hibernate 无法访问 phpMyAdmin 插入的数据的主要内容,如果未能解决你的问题,请参考以下文章
我无法访问 http://localhost/phpmyadmin/