Hibernate не будет сохранять данные после сохранения

Может ли кто-нибудь объяснить, почему дата «lastAccessed» не сохраняется в базе данных в этом примере и как я могу заставить ее сохраниться в БД? Насколько я понимаю, объект do является прикрепленным объектом после вызова save(), и поэтому все изменения должны сохраняться автоматически.

Примечание: «myDate» сохраняется корректно, поэтому все остальные настройки Spring кажутся правильными.

@Transactional(readOnly = false)
public DateObject getOrCreateDateObject(Date myDate) {
    DateObject do = null;

    do = getCurrentDateObject();  // For my tests, this has been returning null

    if (do == null) {
        // create a new object
        do = new DateObject();
        do.setDate(myDate);
        sessionFactory.getCurrentSession().save(do);
    }

    // This does not persist to the database
    do.setLastAccessed(new Date());

    return do;
}

Я также пробовал некоторые из следующих комбинаций (и многое другое) после вызова save(). Ничего из этого не работает:

sessionFactory.getCurrentSession().merge(do);  // tried before and after do.setDate(d2)

sessionFactory.getCurrentSession().update(do);

sessionFactory.getCurrentSession().saveOrUpdate(do);

sessionFactory.getCurrentSession().flush();

DateObject doCopy = (DateObject)sessionFactory.getCurrentSession().load(DateObject.class, do.getId());
sessionFactory.getCurrentSession().merge(doCopy);
doCopy.setLastAccessed(new Date());

Я надеюсь, что это простой ответ, которого я просто не вижу. Спасибо за помощь!

Правка №1 от 22/05/2012

В соответствии с запросом, вот сопоставление для этого объекта, указанного в src/main/resources/META-INF/dateobject.hbm.xml.Я вижу, что столбцы создаются в базе данных с помощью «SELECT * FROM dateObjects» в клиенте mysql. MY_DATE заполнен правильно, но LAST_ACCESSED имеет значение NULL.


    
        
    
    
    

Правка №2 от 24.05.2012

У меня есть работающий SSCCE по адресу https://github.com/eschmidt/dateobject. Интересно то, что веб-клиент (вызывающий localhost:8080/view/test) показывает, что lastAccessed установлен правильно, но когда я проверяю базу данных с помощью клиента MySQL, он показывает, что lastAccessed равен NULL. С помощью этого полного набора кода кто-нибудь может понять, почему база данных не обновляется, даже если метод помечен как @Transactional?

6
задан Eric 25 May 2012 в 03:38
поделиться