cascade 和 server层错误的设计

来源:互联网 发布:org.cn是什么域名 编辑:程序博客网 时间:2024/06/14 20:14

1、Hibernate  cascade问题  :一直以为cascade应该放在ManyToOne里面,今天存储的时候除了问题。为了减少访问数据库,我直接拿保存在界面上的一端(User)的id来创建对象,然后给多端的Message 当外键使用(message.setUser(user)),但user我只是设置了id, user.setId( );平常测试的时候没问题,因为userIId 在数据库里面是存在的。但今天提示好多User对象的其他属性(我设置了nullable=false),比如username为空,而设置时不允许为空的,所以抛出了异常。

   但我的数据库里面是都有这些属性的,只是没读出来而已。后来把多端的cascade=CascadeType.ALL去掉,数据成功保存了,想想大概是设置cascade=CascadeType.all 时就是允许此端拥有主动权,可以帮另一端存储到数据库去,但其他不准为空的属性为空了,所以抛出异常了。

2、今天自作聪明,把server层的save()集合了getBy....,就是保存一个数据的同时,给你返回了要显示的数据列表,也就是一个action 完成了不但可以集合,还可以为你返回要显示的数据,后来发现,我每点击一次地址栏刷新一次页面,action就提交一次,导致一条数据多次提交,所以,还是觉得分开保存和显示的action才适合,由保存action 跳转至显示action, 这样刷新地址栏的时候就不会导致多次提交数据了

0 0
原创粉丝点击