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