hibernate 1对多 inverse配置

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

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

inverse setMain sql条数 数据库结果
true set 1条 正确
false set 2 正确
true 未操作 1 明细表缺少外键
false 未操作 2 正确

从上表中可以看出:

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

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

 

分析:

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

 

结论:

在1对多关联关系中,一般将多方设置为主控方(同时需要在多方维护关联关系), 这样将有助于改善性能,不需要在insert后再update,直接insert即可。
 
 
参考资料:
 

posted on 2014-07-28 15:47  马来亚  阅读(315)  评论(0编辑  收藏  举报

导航