2015-07-19 3 views
0

Сохраняет 15 объектов, а затем просто переходит в бесконечный цикл, ничего не делая. На консоль ничего не выводится.Hibernate не сохраняет более 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 за раз, но я бы предпочел не делать этого в будущем.

+0

Он должен работать. Вам не нужно ограничивать это до 15. Вы поставили точку отладки и проверили, почему она ведет себя так, как вы думаете, это более 15? – Shahzeb

+0

Включен ли автофлюш? –

+0

Возможно ли, что один из ваших 'persistables' имеет циклическую петлю среди своего дерева объектов? Он «останавливается» на одном и том же объекте или другом 15-м объекте каждый раз? – DuncanKinnear

ответ

-1

Возможно автофлуширование включено, попробуйте выполнить сеанс в цикле.

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

Если это работает, транзакции не могут быть использованы, проверьте версию jdbc.

Смежные вопросы