在我的应用程序中我有用户有文件。 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无法识别文件的更新。
有人知道问题是什么吗?
祝福!
尼
答案 0 :(得分:0)
我猜问题是你的userVO和数据库不同步。您可以尝试从数据库重新加载userVO对象。但我更喜欢使用hibernates传递持久性功能。您可以通过将文件添加到用户对象并更新用户对象来保存文件。看看transitive persistence。