Зачем мне нужна строка "session.save (user);"в следующем фрагменте кода?Я думал, что с помощью вызова find пользователь уже подключен к сеансу, и изменения будут отслеживаться и фиксироваться.Не могли бы вы объяснить мне детали?Или мне нужна особая конфигурация или другие обстоятельства, когда я мог бы услышать об этой «функции»?
session = createSession();
ta = session.beginTransaction();
assertEquals(1, session.createCriteria(MyUser.class).list().size());
// find one user
MyUser user = session.createCriteria(MyUser.class).uniqueResult();
user.setName("Rocker!");
// ### HERE ###
// WHY this 'save' is necessary!!??
session.save(user);
ta.commit();
ta = session.beginTransaction();
assertEquals(1, session.createCriteria(MyUser.class).list().size());
MyUser user = session.createCriteria(MyUser.class).uniqueResult();
assertEquals("Rocker!", user.getName());
ta.commit();
ОБНОВЛЕНИЕ 1
Тот же вопрос относится к
- session.save (пользователь);
- user.setName ("Rocker!");
- ta.commit ();
ОБНОВЛЕНИЕ 2
Решение проблемы: я использую guice / warp persist.И в некоторых случаях я был неправильно привязан блок кода к транзакции через @Transactional: поэтому транзакция была зафиксирована слишком рано, и, следовательно, отдельное изменение не было включено в фиксацию.Спасибо, парни!Поэтому всегда проверяйте объем транзакции, если вы используете spring или guice ...