我想更新数据集的UserData属性之一(名称,街道,城市等) 这样:
关系&数据库属性: 此UserData与其用户具有双向关系,其中使用了User.hbm.xml上的cascade =“save-update”,因此
用户在DB中具有此属性(id_user,外键: id_UserDetail,status)
UserData 有(id_UserDetail,外键: id_User,经典信息字段名称,街道,电话等)
我使用此方法更新到数据库: 更新方法
public void ajaxNameListener(AjaxBehaviorEvent event) {
UserData usrData = new UserData();
userData.setName(name); // I want update only name property,but unfortunately rest is also overwriten to null in DB
User user = BeanFactory
.getHotelDAOService(User.class)
.findbyIdIndetifier(selectedUserId); // selectedUserId is just identifier from my list of user,so here i declared which concrete User be updated by Id of Users
user.setUserData(userData);
BeanFactory.getHotelDAOService(User.class)
.update(user);
}
此方法在我的Jsf页面上用作监听器表单<a4j:>
但是没有问题,
我需要以某种方式修复此方法只更新此DB字段我需要什么,休息必须是未加工的,但在这种情况下我成功地更改了例如字段'name'这个更新字段名称由specialy Id,但其余的UserData列被覆盖为NULL,
有人可以给我一些建议怎么修改这个方法?或者可以根据这种情况编写自己的方法,这会导致我只想更新我要更新的字段,而不是在数据库中休息为NULL, 非常感谢你的帖子和回复, 欢呼声,
答案 0 :(得分:0)
发生此问题是因为在您保存/更新用户的实例时,它没有其FK属性的值。所以FK属性的值变为空。
为避免这种情况,您可以按照以下方式进行操作: