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/

无法访问 phpmyadmin(403 权限错误)

我无法访问 phpmyadmin

无法访问 PHPmyadmin。我的 wamp 服务器 2.4 版

无法访问 PHPMyAdmin

EasyPHP 无法访问 PhpMyAdmin