Как сохранить обновление @OneToMany в спящем режиме? - PullRequest
0 голосов
/ 03 октября 2010

в моем приложении у меня есть пользователи, у которых есть файлы. UserVO имеет следующее отображение:

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "users")
public Set<Files> getFiles()
{
    return this.files;
}

Тогда у меня есть HibernateDAO со следующим обновлением метод:

public void update(T vo)
{
    try
    {
        startTransaction();
        getSession().clear();
        getSession().update(vo);
        closeTransaction();
    }
    catch (HibernateException e)
    {
        rollbackTransaction();
        e.printStackTrace();
    }
}

Когда некоторые значения файла пользователя изменились, я хочу обновить свой файл. Поэтому я использую:

        daoFiles.update(file); // this uses the HibernateDAO update!
        UserDAO daoUser = UserDAO.getInstance();
        daoUser.update(user); //... also a HibernateDAO update

Изменения файла сохраняются в базе данных, но если я хочу отобразить файлы пользователя, я не могу изменить файлы, потому что отображались старые значения. Только если я получу файл VO напрямую, я смогу увидеть новые значения. Таким образом, кажется, что userVO не распознает обновление файла.

Кто-нибудь знает, в чем проблема?

С наилучшими пожеланиями!

Benny

1 Ответ

0 голосов
/ 07 октября 2010

Я думаю, проблема в том, что ваш userVO и база данных не синхронизированы.Вы можете попытаться перезагрузить объект userVO из базы данных.Но я бы предпочел использовать переходную постоянную функцию гибернат.Вы можете сохранить файлы, добавив их в пользовательский объект и обновив пользовательский объект.Взгляните на транзитивное постоянство .

...