r3441 - trunk/lima-business/src/main/java/org/chorem/lima/business/ejb
Author: echatellier Date: 2012-06-05 15:47:53 +0200 (Tue, 05 Jun 2012) New Revision: 3441 Url: http://chorem.org/repositories/revision/lima/3441 Log: fix : ObjectDeletedException: deleted object would be re-saved by cascade Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/EntryBookServiceImpl.java Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/EntryBookServiceImpl.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/EntryBookServiceImpl.java 2012-06-05 09:04:14 UTC (rev 3440) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/EntryBookServiceImpl.java 2012-06-05 13:47:53 UTC (rev 3441) @@ -140,27 +140,35 @@ @Override public void removeEntryBook(EntryBook entryBook) throws LimaException { + // check rule AccountingRules accountingRules = LimaConfig.getInstance().getAccountingRules(); - - // check rule accountingRules.removeEntryBookRules(entryBook); try { - + // re-attach to current transaction + EntryBookDAO entryBookDAO = getDaoHelper().getEntryBookDAO(); + EntryBook localEntryBook = entryBookDAO.findByTopiaId(entryBook.getTopiaId()); // delete all ClosedPeriodicEntryBook from this EntryBook ClosedPeriodicEntryBookDAO closedPeriodicEntryBookDAO = getDaoHelper().getClosedPeriodicEntryBookDAO(); List<ClosedPeriodicEntryBook> closedPeriodicEntryBooks = - closedPeriodicEntryBookDAO.findAllByEntryBook(entryBook); + closedPeriodicEntryBookDAO.findAllByEntryBook(localEntryBook); for (ClosedPeriodicEntryBook closedPeriodicEntryBook : closedPeriodicEntryBooks) { + if (log.isDebugEnabled()) { + log.debug("Deleting closed " + closedPeriodicEntryBook.getTopiaId()); + } + + // fix : ObjectDeletedException: deleted object would be re-saved by cascade + closedPeriodicEntryBook.getEntryBook().removeFinancialPeriodClosedPeriodicEntryBook(closedPeriodicEntryBook); + closedPeriodicEntryBook.getFinancialPeriod().removeEntryBookClosedPeriodicEntryBook(closedPeriodicEntryBook); + closedPeriodicEntryBookDAO.delete(closedPeriodicEntryBook); } // delete entry book - EntryBookDAO entryBookDAO = getDaoHelper().getEntryBookDAO(); - entryBookDAO.delete(entryBook); + entryBookDAO.delete(localEntryBook); } catch (Exception ex) { throw new LimaException("Can't remove entry book", ex);
participants (1)
-
echatellier@users.chorem.org