首页 > 代码库 > hibernate 1对多 inverse配置

hibernate 1对多 inverse配置

    在使用hibernate对1对多这种模型进行操作时,总发现多方的外键不能保存,一直为空,百度后发现是inverse的配置错误

    根据自己的测试,如下表所示:(1方配置inverse,多方不配置)

inversesetMainsql条数数据库结果
trueset1条正确
falseset2正确
true未操作1明细表缺少外键
false未操作2正确

从上表中可以看出:

 只有inverse==true,并且在多方未维护1方时,结果会出错。

其余条件下,均得到正确结果。

 

分析:

inverse指定由谁来维护外键关系,
如果==false,则由自己(1方)控制
生成sql语句会产生insert update 两条
如果==true,则由对方(多方)进行维护。
只会生成insert 1条语句,提高数据库效率

 

结论:

在1对多关联关系中,一般将多方设置为主控方(同时需要在多方维护关联关系), 这样将有助于改善性能,不需要在insert后再update,直接insert即可。
 
 
参考资料:
http://baike.baidu.com/view/1258648.htm?fr=aladdin
http://www.blogjava.net/wintys/archive/2009/06/13/hibernate_onetomany.html