java – hibernate很多关系级联
发布时间:2020-12-15 02:26:15 所属栏目:Java 来源:网络整理
导读:休眠的新手我有两个表A和B,它们具有由表AB(A_ID和B_ID)定义的多对多关系,其中外键引用A.A_ID和B.B_ID,并且在定义的删除和更新时级联. 我有映射 a.hbm.xml有 set name="bSet" table="AB" inverse="true" lazy="false" fetch="select" cascade="all" key colum
休眠的新手我有两个表A和B,它们具有由表AB(A_ID和B_ID)定义的多对多关系,其中外键引用A.A_ID和B.B_ID,并且在定义的删除和更新时级联.
我有映射 a.hbm.xml有 <set name="bSet" table="AB" inverse="true" lazy="false" fetch="select" cascade="all"> <key> <column name="A_ID" not-null="true" /> </key> <many-to-many class="objectB" > <column name="B_ID" not-null="true" /> </many-to-many> </set> b.hbm.xml有 <set name="aSet" table="AB" inverse="false" lazy="false" fetch="select" cascade="all"> <key> <column name="B_ID" not-null="true" /> </key> <many-to-many class="objectA"> <column name="A_ID" not-null="true" /> </many-to-many> </set> //ObjectA.java has private Set<ObjectB> bSet = new HashSet<objectB>(0); //ObjectB.java has private Set<ObjectA> aSet = new HashSet<objectA>(0); 从前端发送A对象作为带有B的集合的json,表A在AB未被触及时正确地更新. 有人能指出我哪里错了吗? { "a_field1": "value1","a_field2": "value2","aId": 1,"bSet": [ { "bId": 100 },{ "bId": 200 } ],"a_field3": "value3" } 最初,db在AB表中设置了3条记录 (1,100) (1,200) (1,300) 数据库中的最终结果应该是 (1,200) 应该删除最后一行(1,300). 任何帮助是极大的赞赏. >沙阿 解决方法
我最好的猜测(您没有提供处理请求的服务器代码的任何示例)是您只更新双向关联的一侧.换句话说,您只是反序列化A实例并进行合并.如果你得到一个新的A,你仍然需要合并A实例,但你还需要加载A不再引用的所有B,并从列表中删除A实例,并查找A新引用的所有B.并在其列表中添加A.这是代码中双向关系的危险之一.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – HashMap更新ArrayList
- java – jsoup中的哪个方法可以返回修改后的html?
- IISExpress 配置允许外部访问详细介绍
- java – 使用Appium和Gradle进行Android测试
- 如何在Java中的Apache Spark中将DataFrame转换为Dataset?
- 【Java】【48】List去重
- java – 如何防止Eclipse将文件标记为错误
- Java工具类实现校验公民身份证的有效性
- java.sql.SQLException: ORA-28040: No matching authentic
- java – 使用GWT将数据对象从客户端传输到服务器以保持数据