在hibernate中使用逆true

Cha*_*nya 10 java hibernate

我正在浏览hibernate文档并遇到了inverse属性的概念.我是Hibernate的新手,所以我很难理解这个概念.

http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/collections.html#collections-bidirectional

<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中这个属性的含义.

  • 我认为这篇文章非常令人困惑(尽管这是google中"hibernate inverse"的第一个结果)请参阅此评论http://www.mkyong.com/hibernate/inverse-true-example-and-explanation/#comment -1129060935 (2认同)