Как запретить Spring / Hibernate автоматически фиксировать мои изменения в базе данных? - PullRequest
1 голос
/ 09 февраля 2010

Я работаю с Spring и Hibernate. У меня есть объект, который был извлечен из базы данных с помощью HibernateTemplate.

Когда я изменяю этот объект, Hibernate выполняет вставки в базу данных до того, как данные будут готовы для вставки, в результате возникает множество ошибок базы данных вдоль строки «не могу вставить NULL в ...».

Есть ли способ сказать Spring / Hibernate «не обновлять базу данных этим, пока я не вызову HibernateTemplate.persist ()»? Я посмотрел в Javadoc HibernateTemplate, но ничего не смог найти

Ответы [ 2 ]

1 голос
/ 09 февраля 2010

Hibernate сбрасывает изменения, потому что вы используете контекст персистентности в области транзакции. Это означает, что все управляемые объекты синхронизируются с базой данных при фиксации транзакции. Если вам это не нравится, просто не делайте ваш метод транзакционным. Таким образом, полученная вами сущность не будет синхронизирована с базой данных - транзакция не будет зафиксирована.

0 голосов
/ 14 января 2012

Попробуйте аннотировать метод, в котором вы не хотите никаких изменений, таких как:

@Transactional(readOnly = true)
public yourMethod(){
    //some hibernate-spring code here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...