Java - Почему Hibernate обнаруживает грязный объект, хотя он уже сохранен?

1


Я использую spring и hibernate в нашем веб-приложении, и у нас есть проблема с несколькими строками, вставленными всего за одно исполнение. В нашем коде нет цикла для вставки трех строк в один пользовательский запрос. Мне просто интересно, может ли это (спящий режим обнаруживает грязный объект).
Пожалуйста помоги...
Благодаря,

  • 0
    Когда вы сохраняете вновь созданный объект, он становится «прикрепленным», если транзакция не зафиксирована / откатана, а затем чувствительна к любым изменениям. Кстати, почему бы не показать концептуальный код или ваш точный код?
  • 0
    stackoverflow.com/questions/24626103/...
Теги:
spring
hibernate

1 ответ

1
Лучший ответ

Когда сеанс открыт и объект просто сохраняется или извлекается из базы данных. Это состояние называется постоянным. Во время этого состояния Hibernate управляет объектом и сохраняет ваши изменения, если вы их совершаете. Ниже вы можете увидеть пример. Автомобиль будет сохранен и имя будет изменено впоследствии. Когда автомобиль находится в постоянном состоянии, новое имя будет сохранено.

Session session = HibernateSessionFactory.currentSession();
tx = session.beginTransaction();
session.save(car);
car.setName("Peugeot");
tx.commit();

Следующий код загружает автомобиль по id и изменяет имя. В сеансе не участвует session.update. Каждый объект, загруженный session.get, session.load или запросом, находится в постоянном состоянии. Он сохраняется в контексте сохранения сеанса. Когда tx.commit(), Hibernate tx.commit() контекст персистентности и все еще не написанные инструкции вставки, обновления и удаления выполняются.

Убедитесь, что вы не изменяете объект (отношения) после операции сохранения и до совершения транзакции.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню