ManyToMany 中间表

以前使用多对多只是用来查询,还没有真正用来插入进行中间表的管理,所以第一次使用会遇到很多的问题,感觉不知如何着手,这是一下问题的表现情况:

@Test
@Rollback(false)
public void testAddProtocol() {

AssayType assayTypeOne = assayTypeDAO.getObject(1263);
AssayType assayTypeTwo = assayTypeDAO.getObject(1264);
AssayType assayTypeThr = assayTypeDAO.getObject(1186);

/*AssayType assayTypeOne = assayTypeDAO.getObject(1190);
AssayType assayTypeTwo = assayTypeDAO.getObject(1191);
AssayType assayTypeThr = assayTypeDAO.getObject(1196);*/

Set<AssayType> assayTypes = new HashSet<AssayType>();
assayTypes.add(assayTypeOne);
assayTypes.add(assayTypeTwo);
assayTypes.add(assayTypeThr);

Protocol protocol = protocolDAO.getProtocolByName("founder One");
protocol.setAssayTypes(assayTypes);

protocolDAO.addOrModifyProtocol(protocol);
}


AssayType和Protocol是多对多的关系,你执行此函数,中间表中有三条数据,这个结果是预期想要的结果,当你将注释打开,将前三行注释,执行此函数,此时期望的结果应该是中间表有六条数据,但你得到的结果却是三天,就是它将覆盖以前插入的三条,通过同事的指点原来在插入之前续签先将它取出,正确的做法应该是:
@Test
@Rollback(false)
public void testAddProtocol() {

AssayType assayTypeOne = assayTypeDAO.getObject(1263);
AssayType assayTypeTwo = assayTypeDAO.getObject(1264);
AssayType assayTypeThr = assayTypeDAO.getObject(1186);

/*AssayType assayTypeOne = assayTypeDAO.getObject(1190);
AssayType assayTypeTwo = assayTypeDAO.getObject(1191);
AssayType assayTypeThr = assayTypeDAO.getObject(1196);*/

Set<AssayType> assayTypes = new HashSet<AssayType>();
assayTypes.add(assayTypeOne);
assayTypes.add(assayTypeTwo);
assayTypes.add(assayTypeThr);

Protocol protocol = protocolDAO.getProtocolByName("founder One");
assayTypes.addAll(protocol.getAssayTypes());
protocol.setAssayTypes(assayTypes);

protocolDAO.addOrModifyProtocol(protocol);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值