论坛首页 Java企业应用论坛

hibernate入门篇之新增功能_4:many-to-many

浏览 39999 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-02-24  
我在我的机器上测试过,代码有一点小小的问题,就是上面老兄说过的,在一端设置inverse="true", 另一端设置为inverse="false"
0 请登录后投票
   发表时间:2004-03-03  
thank you for your work
0 请登录后投票
   发表时间:2004-04-07  
inverse是标记这个集合作为双向关联关系中的方向一端。

所以只要把work.hbm中的inverse="true"去掉,在author.hbm中加上就可以了,
另外這幾行代碼也可以不要了
     author1.getWorks().add(work1);
        author1.getWorks().add(work3);
        author2.getWorks().add(work1);
        author2.getWorks().add(work3);

我感覺這幾行好像本來就不對吧,即使有也應該是
      author1.getWorks().add(work1);
        author1.getWorks().add(work3);
        author2.getWorks().add(work1);
        author2.getWorks().add(work3);
        author3.getWorks().add(work2);
        author3.getWorks().add(work4);
        author4.getWorks().add(work2);
        author4.getWorks().add(work4);
0 请登录后投票
   发表时间:2004-04-15  
我在插入数据后,其他表都有数据而author_work缺没有数据呢?
0 请登录后投票
   发表时间:2004-08-25  
table="author_work"

修改work或author的set时候
这个table是要得到更新的
如果是set.add()
那么,这个联系表在那里指定了generator class 呢?
如何指定它的 generator class  呢?

比如我在Oracle里面,用sequence做generator class
那么这个many to many的关系中的联系表的主键是没办法生成的~
把联系表映射成实体又好像说不过去~
如何解决?
0 请登录后投票
   发表时间:2005-02-17  
为什么我能save但是不能够remove关联呢?
如 role.getPermission().remove(permission);
0 请登录后投票
   发表时间:2005-02-18  
下面是两个类:OutPoint.java 和InPoint.java代码:
---------------------------------------------------------
OutPoint.hbm.xml
<hibernate-mapping>
    <class
        name="org.hibernate.test.OutPoint"
        table="out_point"
        dynamic-update="false"
        dynamic-insert="false"
    >

        <id
            name="sourceid"
            column="sourceid"
            type="java.lang.Integer"
        >
            &lt;generator class="identity"&gt;
            &lt;/generator&gt;
        </id>

        &lt;property
            name="outName"
            type="java.lang.String"
            update="true"
            insert="true"
            access="property"
            column="outname"
            length="255"
            not-null="true"
        /&gt;

        &lt;property
            name="outDegree"
            type="java.lang.Integer"
            update="true"
            insert="true"
            access="property"
            column="out_degree"
            length="10"
            not-null="true"
        /&gt;

        &lt;set
            name="in_points"
            table="structure"
            lazy="false"
            inverse="false"
            cascade="all"
            sort="unsorted"
        &gt;

              &lt;key
                  column="sourceid"
              &gt;
              &lt;/key&gt;

              &lt;many-to-many
                  class="org.hibernate.test.InPoint"
                  column="endid"
                  outer-join="auto"
               /&gt;
        &lt;/set&gt;
    &lt;/class&gt;
&lt;/hibernate-mapping&gt;
-----------------------------------------------------------
InPoint.hbm.xml
&lt;hibernate-mapping&gt;
    &lt;class
        name="org.hibernate.test.InPoint"
        table="in_point"
        dynamic-update="false"
        dynamic-insert="false"
    &gt;

        <id
            name="endid"
            column="endid"
            type="java.lang.Integer"
        >
            &lt;generator class="identity"&gt;
            &lt;/generator&gt;
        </id>

        &lt;property
            name="inName"
            type="java.lang.String"
            update="true"
            insert="true"
            access="property"
            column="inname"
            length="255"
            not-null="true"
        /&gt;

        &lt;property
            name="inDegree"
            type="java.lang.Integer"
            update="true"
            insert="true"
            access="property"
            column="in_degree"
            length="10"
            not-null="false"
        /&gt;

        &lt;set
            name="out_points"
            table="structure"
            lazy="false"
            inverse="false"
            cascade="all"
            sort="unsorted"
        &gt;

              &lt;key
                  column="endid"
              &gt;
              &lt;/key&gt;

              &lt;many-to-many
                  class="org.hibernate.test.OutPoint"
                  column="sourceid"
                  outer-join="auto"
               /&gt;

        &lt;/set&gt;
    &lt;/class&gt;
&lt;/hibernate-mapping&gt;
----------------------------------------------------
测试:
在OutPoint中插入out1,ou2在InPoint中插入in1,in2,in3,in4
out1,out2分别指向in1~4;
若cascade=all则删除一个值时(无论是out或者in)所有的数据都将被删除;
若cascade=save-update时报错无法删除。

请各位,有在many-to-many下操作delete的心得谈一谈。

我的需求主要是可以可以将out中指向in中的关系解除掉。比如:
上例中我要求删除out1,此时我需要解除out1指向in1~4的关系即可,可是在做删除的时候,hibernate中却将in全部有关联的都删掉了。
0 请登录后投票
   发表时间:2005-03-19  
都提到的是新增,删除
那么修改一方的数据呢?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics