违反Mybatis Spring事务性多重删除约束
我正在与Spring 3和Mybatis 3合作 当我想进行级联删除时,一切正常 我有两个表,中间有一个M-M关系表。类似于表1->中间表---->表2 我想从midle表中删除数据,然后删除表2中相关的de数据 在使用事务性方法时违反Mybatis Spring事务性多重删除约束,spring,transactions,mybatis,delete-row,Spring,Transactions,Mybatis,Delete Row,我正在与Spring 3和Mybatis 3合作 当我想进行级联删除时,一切正常 我有两个表,中间有一个M-M关系表。类似于表1->中间表---->表2 我想从midle表中删除数据,然后删除表2中相关的de数据 在使用事务性方法时 @Transactional public void relacionaReservaLibreBonoLibre(ParametrosRelacionReservaBono params) throws Exception{ ReservaBean r=r
@Transactional
public void relacionaReservaLibreBonoLibre(ParametrosRelacionReservaBono params) throws Exception{
ReservaBean r=rm.buscarReservaPorPK(params.getReserva());
for(BonoJson b:params.getListaBonosAdd()){
HotelBean h=hm.buscaHotelPorCodHotel(b.getHotel());
EstacionBean e=em.buscaEstacionPorEstacionYHotel(b.getEstacion(),h.getCnHotel());
DocumentoBean db=new DocumentoBean();
db.setCnEstacion(e.getCnEstacion());
db.setCnHotel(h.getCnHotel());
db.setCnTipDoc(r.getCnTipoDoc());
db.setFlLibre(true);
db.setTeDoc(b.getCodBono());
Integer docId=dm.insertaDocumento(db);
DocumentoReservaBean drb=new DocumentoReservaBean();
drb.setCnDoc(docId);
drb.setCnReserva(r.getCnReserva());
drm.insertaDocumentoReserva(drb);
}
for(BonoJson b:params.getListaBonosQuit()){
HotelBean h=hm.buscaHotelPorCodHotel(b.getHotel());
EstacionBean e=em.buscaEstacionPorEstacionYHotel(b.getEstacion(),h.getCnHotel());
ReservaDocumentoReservaBean filtro=new ReservaDocumentoReservaBean();
filtro.setTeDoc(b.getCodBono());
filtro.setCnReserva(r.getCnReserva());
filtro.setFlLibre(true);
List<ReservaDocumentoReservaBean> resPrev=rdm.getReservaDocumentos(filtro);
for(ReservaDocumentoReservaBean resPart:resPrev){
DocumentoReservaBean drb=new DocumentoReservaBean();
drb.setCnDocReserva(resPart.getCnDocReserva());
drm.eliminaDocumentoReservaPorPK(drb);
DocumentoBean db=new DocumentoBean();
db.setCnDoc(resPart.getCnDoc());
dm.eliminaDocumentoPorPK(db);
}
}
}
它将约束冲突表2启动到中间表,该表中的约束冲突将被删除
drm.eliminaDocumentoReservaPorPK(drb);
有什么提示吗
提前感谢。有几种选择:
添加到表2中的外键到中间表定义中即可
第三个选项是我正在寻找的,我忘了说DB是PostgreSQL。谢谢
drm.eliminaDocumentoReservaPorPK(drb);