该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-02-24
我在我的机器上测试过,代码有一点小小的问题,就是上面老兄说过的,在一端设置inverse="true", 另一端设置为inverse="false"
|
|
返回顶楼 | |
发表时间:2004-03-03
thank you for your work
|
|
返回顶楼 | |
发表时间: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); |
|
返回顶楼 | |
发表时间:2004-04-15
我在插入数据后,其他表都有数据而author_work缺没有数据呢?
|
|
返回顶楼 | |
发表时间:2004-08-25
table="author_work"
: 修改work或author的set时候 这个table是要得到更新的 如果是set.add() 那么,这个联系表在那里指定了generator class 呢? 如何指定它的 generator class 呢? 比如我在Oracle里面,用sequence做generator class 那么这个many to many的关系中的联系表的主键是没办法生成的~ 把联系表映射成实体又好像说不过去~ 如何解决? |
|
返回顶楼 | |
发表时间:2005-02-17
为什么我能save但是不能够remove关联呢?
如 role.getPermission().remove(permission); |
|
返回顶楼 | |
发表时间: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" > <generator class="identity"> </generator> </id> <property name="outName" type="java.lang.String" update="true" insert="true" access="property" column="outname" length="255" not-null="true" /> <property name="outDegree" type="java.lang.Integer" update="true" insert="true" access="property" column="out_degree" length="10" not-null="true" /> <set name="in_points" table="structure" lazy="false" inverse="false" cascade="all" sort="unsorted" > <key column="sourceid" > </key> <many-to-many class="org.hibernate.test.InPoint" column="endid" outer-join="auto" /> </set> </class> </hibernate-mapping> ----------------------------------------------------------- InPoint.hbm.xml <hibernate-mapping> <class name="org.hibernate.test.InPoint" table="in_point" dynamic-update="false" dynamic-insert="false" > <id name="endid" column="endid" type="java.lang.Integer" > <generator class="identity"> </generator> </id> <property name="inName" type="java.lang.String" update="true" insert="true" access="property" column="inname" length="255" not-null="true" /> <property name="inDegree" type="java.lang.Integer" update="true" insert="true" access="property" column="in_degree" length="10" not-null="false" /> <set name="out_points" table="structure" lazy="false" inverse="false" cascade="all" sort="unsorted" > <key column="endid" > </key> <many-to-many class="org.hibernate.test.OutPoint" column="sourceid" outer-join="auto" /> </set> </class> </hibernate-mapping> ---------------------------------------------------- 测试: 在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全部有关联的都删掉了。 |
|
返回顶楼 | |
发表时间:2005-03-19
都提到的是新增,删除
那么修改一方的数据呢? |
|
返回顶楼 | |