好久没用HIB了,我没记错的话assigned应该是由你的程序来指定一个KEY给VO对象,你每次插入记录时KEY都是xxxx1,那不是冲突了,当然报错了。uuid.hex是由HIB自动生成一个不重复的KEY,好好看看错误信息是什么,我估计应该是这个原因。
解决方案 »
- java ssh utf-8链接数据库汉字正常显示但是源代码不正常
- 关于apache commons的HttpClient4.0的页面跳转
- 怎么在JSP中获取上上级目录的图片
- 在Myeclipse里导入了一个聊天程序,注册时出错了,大神帮忙看下
- 介绍框架的有什么书可以看?
- struts 如何注册后自动发信确认呢?
- spring MVC架构下JSP页面中嵌入的Java代码如何引用传到页面command对象?
- struts2标签的问题
- org.springframework.beans.NotWritablePropertyException
- classpath设置的问题,急!在线等!请高手帮帮忙!!!
- spring +hibernate +webwork2的问题
- [求救]为什么我的系统经常数据库阻塞和死锁?
谢谢你的回复,不过我还不至于这么菜,上面只不过是我举的一个例子而已。
主要问题在于后台打印的sql语句成了update,而不是insert
其实hibernate才不管你是调用save还是update还是saveOrUpdate,他只是管理对象状态,他认为是新的对象(没有ID),就用insert,已存在对象(有ID)就用update.
这个ID叫做持久化标识符,你也可以在映射文件中设置当ID值等什么时,该对象为未持久化状态,默认是当o.getId()==null,时就会insert,else update
多对一,一对多设置是没有问题的,不然修改后会出错
cascade是设置级联的,这里我设的是save-update,因为数据库上面设置了外健
inverse用夏昕的话说就是让全国人民记住胡锦涛的名字,而不是胡锦涛来记住全国人民的名字
不知道我理解得对不
因为之前设置了id值,hibernate就把它当成已存在的对象了,所以用了update
等有空了再好好研究一下
我认为hibernate应该是先判断我们的主键类型,然后再判断主键是否为空的吧。