我正在浏览hibernate文档并遇到了inverse属性的概念.我是Hibernate的新手,所以我很难理解这个概念.
<class name="Category">
<id name="id" column="CATEGORY_ID"/>
...
<bag name="items" table="CATEGORY_ITEM">
<key column="CATEGORY_ID"/>
<many-to-many class="Item" column="ITEM_ID"/>
</bag>
</class>
<class name="Item">
<id name="id" column="ITEM_ID"/>
...
<!-- inverse end -->
<bag name="categories" table="CATEGORY_ITEM" inverse="true">
<key column="ITEM_ID"/>
<many-to-many class="Category" column="CATEGORY_ID"/>
</bag>
</class>
Run Code Online (Sandbox Code Playgroud)
从上面的代码,它inverse="true"被应用于类别,所以我理解类别是反面的.
但我看到与我的理解有些矛盾:
仅对关联的反向末端所做的更改不会保留.
category.getItems().add(item); // The category now "knows" about the relationship
item.getCategories().add(category); // The item now "knows" about the relationship
session.persist(item); // The relationship won't be saved!
session.persist(category); // The relationship will be saved
Run Code Online (Sandbox Code Playgroud)
如果类别是反向结束,那么如何保存关系?
非反向侧用于将内存中表示保存到数据库.
在查看示例并阅读上述声明后,我发现类别处于非反向结束.
请帮助我知道如何解释这个inverse="true"属性.在网上搜索并在SO中查找答案后,我开始知道这个属性的用处,但我仍然有这种困惑.
bla*_*her 15
inverse="true"基本上意味着反向关系也映射在另一个类的类定义中.但是,它的真正含义是它定义哪一方是两个实体(父母或子女)的父母或关系所有者.因此,inverse="true"在Hibernate映射中显示该类(具有此XML定义的类)是关系所有者; 而另一个班级是孩子.
如果您想了解更多相关内容,那么我肯定会看看这篇文章:http://www.mkyong.com/hibernate/inverse-true-example-and-explanation/因为很容易被误导hibernate中这个属性的含义.
| 归档时间: |
|
| 查看次数: |
26844 次 |
| 最近记录: |