hibernate,一对多,保存更新问题

XEZBZ 2017-11-02 08:34:30
最近在做一个有关网页聊天的项目,需要保存聊天记录到数据库中,用到了两张表,一张是用户表User,一张是聊天记录表chatHistory;User结构大概如下:
id userName(用户名) password(密码)

User对应的bean如下:
public class User{
private Long id;
private String userName;
private String passWord;
get\set方法.....
}


chatHistory结构大概如下:
id senderId(发送用户Id) reciverId(接受用户Id) msg(信息内容)

chatHistory对应的bean如下:
public class chatHistory{
private Long id;
private User sender;
private User reciver;
private String msg;
get\set方法....
}
项目使用了hibernate,spring和struts;
在保存聊天记录时,我直接这样:
User sender = new User();
sender.setId(2);
User reciver = new User();
reciver.setId(3);
chatHistory ch = new chatHistory();
ch.setSender(sender);
ch.setReciver(reciver);
ch.setMsg("hello world!");

new HibernateTemplate(sessionFactory).save(ch);

结果是id为2和3的用户的userName和password字段都被更新为Null了,请问这该怎么解决,菜鸟一枚,还请各位大神赐教,
...全文
417 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
十歌 2018-09-13
  • 打赏
  • 举报
回复
User sender = new User();
sender.setId(2);
User reciver = new User();
reciver.setId(3);

你这样就新NEW了user对象 重新设置了user里面的内容 你又只set了id 账号密码当然为NULL
你不能NEW 你要先获得相应user对象 如:User user = session.get(user.class,id) 然后再用user.setXXX进行修改
wnho02 2017-11-06
  • 打赏
  • 举报
回复
<many-to-one name="sender" column="SenderId" cascade="all" /> 
你把cascade属性改一下试试, 有可能更新的时候级联更新了User,属性改为None试试
XEZBZ 2017-11-04
  • 打赏
  • 举报
回复
我不是用注解,是用xml配置的 user配置如下: <class name="User" table="User"> <id name="id" column="id"> <generator class="native"/> </id> <property name="userName"/> <property name="passWord"/> </class> chatHistory配置如下: <class name="chatHistory" table="chatHistory"> <id name="id" column="id"> <generator class="native" /> </id> <property name="msg" /> <many-to-one name="sender" column="SenderId" cascade="all" /> <many-to-one name="reciver" column="ReciverId" cascade="all" /> </class>
pheonix0992 2017-11-03
  • 打赏
  • 举报
回复
user的Id是怎么设置的,是自增的还是手动设置的,你把数据库的注解发出来看下。
XEZBZ 2017-11-02
  • 打赏
  • 举报
回复
请问如何才能做到保存信息时不更新user表

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧