hibernate设置属性以触发数据库更新

时间:2012-05-05 11:58:54

标签: mysql hibernate java-ee

我刚刚在Hibernate中发现了一个奇怪的问题。

在Hibernate框架和json-plugin中的My Java EE Web项目中。我的代码就像这样

private User user;
get(),set()....

public String getUser(){
   if(findUser(...) != null){
       user = findUser(...);
       user.setPasssword("")//!important for the purpose of  does not transmit the password to the front
       return "success";
   } else {
       return "error";
   }
}

当代码执行数据库中的用户密码被清除时出现问题,我确定任何更新和插入功能都不会被触发。

我想知道为什么?谁能搞清楚并感谢!

1 个答案:

答案 0 :(得分:1)

这就像Hibernate这样的ORM的基本原则:您操纵映射到数据库表的对象,并附加到持久会话,并且您对这些对象所做的每个更改都会自动透明地记录在数据库中。

如果您希望更改未在数据库中记录的User对象,则需要首先使用session.evict(user)从Hibernate会话中分离对象。

你似乎没有掌握Hibernate的基本(和非常重要)原则。阅读excellent documentation