【问题标题】:Hibernate wont save more than 15 objects during one transactionHibernate 在一次事务中不会保存超过 15 个对象
【发布时间】:2015-10-09 00:29:57
【问题描述】:

它保存 15 个对象,然后进入无限循环,什么也不做。没有任何东西输出到控制台。

这是代码:

Session session = sessionFactory.openSession();
Transaction transaction = null;
try {
        transaction = session.beginTransaction();

        for (Persistable persistable: persistables) {
           session.save(persistable);
        }

        transaction.commit();
    }
    catch (HibernateException e) {
        if (transaction != null) transaction.rollback();
    }
    finally {
        session.close();
    }

我正在使用标准的 jdbc mysql 连接器,其标准属性和 hbm2ddl 设置为“创建”。我通过一次循环遍历对象 15 来解决它,但我不希望将来这样做。

【问题讨论】:

  • 应该可以。您不必将其限制为 15。您是否设置了调试点并检查了为什么它的行为方式与您认为超过 15 的情况一样?
  • 是否启用了自动刷新?
  • 您的persistables 之一是否有可能在它的对象“树”中有一个循环循环?它是每次都“停”在同一个物体上还是不同的第 15 个物体上?

标签: java mysql hibernate jpa jdbc


【解决方案1】:

可能启用了自动刷新,尝试在循环中刷新会话。

    for (Persistable persistable: persistables) {
       session.save(persistable);
       session.flush();
    }

如果可行,则可能无法使用事务,请检查 jdbc-version。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多