| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Hibernate, как такое объснить? |
| Автор: unkis 16.6.2007, 19:21 | ||
| Здравствуйте, у меня такая странная ситуация. Я сохраняю в базу 5000 записей. Так вот когда я сохраняю по одной записи в транзакцию, то всё в порядке, успешно сохраняются все 5000 записей, правда очень медленно, но вот когда я сохраняю по 50 за одну транзакцию то вылетает ошибка следующего содержания.
Вопрос, почему по одной записи сохранение происходит нормально, а по 50 с ошибкой? От чего это может зависеть? |
| Автор: w1nd 17.6.2007, 00:43 |
| Вы создаёте объекты? Если да, поменяйте генератор ключей. Какой способ гереации ключей используете? |
| Автор: kkorsakoff 17.6.2007, 13:45 | ||
| А это разве не из-за того, что JDBC драйвер не поддерживает batch update? Может надо поставить в cfg.xml вот так?
|
| Автор: w1nd 17.6.2007, 15:25 | ||
Нет. Скорее всего нету автоинкремента для ключей в таблице и генератор используется вроде +1 или MAX. |
| Автор: unkis 17.6.2007, 15:34 |
Поменял помогло, но всё равно не понятно, значит если по одной записи за транзакцию сохранять, то с ключами всё в порядке, а вот если пачками за транзакцию, то ему не нравится, ведь и в первом и во втором случаи ключи одинаковые. Странно всё это как-то |
| Автор: ekr 17.6.2007, 17:01 |
да нет, нормальная ситуация. просто при вставке нескольких записей, пока не подтверждена транзакция , считается, что их еще нет (если уровень изоляции транзакций нормальный выставлен). поэтому многие алгоритмы генерации ключей могут здесь обламываться, если они вида "вставить запись - посмотреть мак. значение ключевого поля - инкрементировать его". |