如何使用hibernate保持@OneToMany更新?

时间:2010-10-03 08:19:36

标签: hibernate mapping one-to-many

在我的应用程序中我有用户有文件。 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

文件的更改会保存到数据库中,但如果我想显示用户的文件,那么我就无法更改文件,因为显示了旧的值。只有直接获得fileVO,我才能看到新值。因此,似乎userVO无法识别文件的更新。

有人知道问题是什么吗?

祝福!

1 个答案:

答案 0 :(得分:0)

我猜问题是你的userVO和数据库不同步。您可以尝试从数据库重新加载userVO对象。但我更喜欢使用hibernates传递持久性功能。您可以通过将文件添加到用户对象并更新用户对象来保存文件。看看transitive persistence