发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

使用hibernate的一个问题

2003-08-05 09:23
赞助商链接

使用集合时,发现一个inverse 属性,看了文档
inverse (optional - defaults to false) mark this collection as the "inverse" end of a bidirectional association。
字面理解标记此集合作为双向关联的反转端。
没有理解其含义,谁能解释解释含义和作用?
谢谢。

2003-08-05 15:15

仅仅改变inverse端,是不会导致persistence的,
要保证两端同时改变,如
user.getGroups().add(group);
group.getUsers().add(user);
或者
parent.getChildren().add(child);
child.setParent(parent);

2003-08-06 16:40

十分感谢。
自己测试和文档中的一些零散说明,猜测出,设为true时,必须两端都更新才会导致持久化的变化。
但是没有看见文档的正式解释:(,不敢断言。

2003-08-06 18:37

那为何要有这样的设置呢 默认为false。 parent改变了之后 children也改变 还省得自己在children中改变 那不更好?不懂

2003-08-06 20:39

如果这样设置的话,添加一个child时就需要两条sql语句,一条insert语句插入child的数据,一条update语句更新child的外键,这样一来效率低,二来如果child的外键有一个not null约束的话,就会违反这个约束。
而设置many端为inverse=true,而one端为inverse=false,就只需要一条
insert语句,插入child的数据和外键。

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com