Java论坛网»Java技术»关于Hibernet级联更新的问题
关于Hibernet级联更新的问题
问?:
有一个公告表Bbs,一个用户表User
公告如果发布了,有发布人,如果没有发布,则为空
所以Bbs跟User是<many-to-one>的关系
在Bbs类中,user的set方法定义是
public void setUser(User user) {
if(user==null) {
this.user=new User();
} else {
this.user = user;
}
}
这样才能保证在Struts标签中使用bbs.user.name不出错
但这样也会导致
当保存没有发布人的Bbs时,出错:
Could not synchronize database state with session
net.sf.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.coscoqd.oa.model.User
根据我的判断应该是保存Bbs时也要保存或更新User
可是我并没有设置级联更新,不知道如何才能取消级联功能
公告如果发布了,有发布人,如果没有发布,则为空
所以Bbs跟User是<many-to-one>的关系
在Bbs类中,user的set方法定义是
public void setUser(User user) {
if(user==null) {
this.user=new User();
} else {
this.user = user;
}
}
这样才能保证在Struts标签中使用bbs.user.name不出错
但这样也会导致
当保存没有发布人的Bbs时,出错:
Could not synchronize database state with session
net.sf.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.coscoqd.oa.model.User
根据我的判断应该是保存Bbs时也要保存或更新User
可是我并没有设置级联更新,不知道如何才能取消级联功能
答!: 1:
if(user==null) {
this.user=new User();
user.setId(null); //假设id为主键
} else {
this.user = user;
}
this.user=new User();
user.setId(null); //假设id为主键
} else {
this.user = user;
}
答!: 2:
user.id就算不设定也为null
因为我设定的是Long id
因为我设定的是Long id
相关JAVA教程:
向各位高手请教: 如何在JAVA中定义自己的字符集?
同比环比分析报表问题
什么样的JAVA开发工具 适合初学者
在java中能不能动态地接受源代码,再实时一行一行地运行出来?
问个DWR的问题
如何使用java和JSP等实现树型菜单!
能否把jtabbedpane的选项卡放在底下显示
多语言的问题
Not able to obtain connection
struts中上传图片
ibatis 多少人在用,用得如何
用hibernate2.1还是hibernate3.0?