我只是先学学如何使用hibernate,就写了以下hxm文件:
Book:
|
Person:
|
然后写了一个测试方法:
|
person表已经有足够的数据
但我执行该方法时,book会成功插入数据库,但bookperson这个中间表里什么数据也没有
这里是SchemaExport生成的表文件:
|
希望高手能帮忙解决一下
顺带提一个小问题,为什么update方法一定要用tx.commit()来完成操作?而其他的不用?我把update和insert都设为ture了,比如:
|
多谢各位了
我只是先学学如何使用hibernate,就写了以下hxm文件:
Book:
|
Person:
|
然后写了一个测试方法:
|
person表已经有足够的数据
但我执行该方法时,book会成功插入数据库,但bookperson这个中间表里什么数据也没有
这里是SchemaExport生成的表文件:
|
希望高手能帮忙解决一下
顺带提一个小问题,为什么update方法一定要用tx.commit()来完成操作?而其他的不用?我把update和insert都设为ture了,比如:
|
多谢各位了
如果update="false" insert="false"表明这个属性不会出现在insert,update语句中,即这是一个可以由其他持久属性得到的属性。
为什么update方法一定要用tx.commit()来完成操作?而其他的不用?
不大明白你的意思!
添加记录用save()(最后也要commit()),
而更新的话分两种情况:
1:对象在同一个session中load进来的话,直接commit()就行了
2:对象在上一个session中load进来的话,先update()(或saveOrUpdate()),再commit()
这两个都设为true有什么问题吗?
我的代码里是从同一个session里load进来,然后update的
同时,我试过使用update和或saveOrUpdate(),都无法更新数据
除非我在开头和结尾分别加上Transaction t = session.beginTransaction()、t.commit()
而我如果是新增一个条数据则无需如此,直接save即可
你能帮忙看看问题出在哪吗?
不过是MAX-NT
inverse的问题你看看hibernate doc中有关bidirectional refrence
那部分吧。
比如
|
上面的代码运行是没有任何问题的,这也是我疑惑的地方
多谢你的指点,我继续看看文档