【问题标题】:Hibernate cannot access data inserted by phpMyAdminHibernate 无法访问 phpMyAdmin 插入的数据
【发布时间】:2014-08-28 10:58:51
【问题描述】:

我的问题是关于休眠的,实际上我正在使用休眠和 mysq 开发 Java EE 应用程序。

一切看起来都很好。但是当我通过 phpMyAdmin 将数据插入我的数据库时,我仍然遇到一个问题,除非我再次启动服务器(tomcat),否则我无法通过休眠立即访问它们。

【问题讨论】:

  • 请发布有关 phpMyAdmin 更新查询、Tomcat 选择查询和数据库连接详细信息的详细信息。
  • 我确实从互联网上的一些文章中了解到它是关于休眠二级缓存的,但我不知道如何修复它
  • 尝试搜索清除休眠缓存的技术,这可能对docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/…有帮助。

标签: java mysql hibernate jakarta-ee phpmyadmin


【解决方案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();
        }
    }

【讨论】:

    猜你喜欢
    • 2012-04-02
    • 2012-08-05
    • 2013-08-04
    • 2021-02-15
    • 2014-12-25
    • 2016-09-03
    • 2017-09-05
    • 2016-03-29
    • 2019-03-22
    相关资源
    最近更新 更多