r1752 - trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util
Author: tchemit Date: 2014-05-05 16:59:13 +0200 (Mon, 05 May 2014) New Revision: 1752 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1752 Log: refs #4958 (fix lazy exception when modifing a catch) Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java 2014-05-05 14:01:03 UTC (rev 1751) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java 2014-05-05 14:59:13 UTC (rev 1752) @@ -2,6 +2,7 @@ import fr.ifremer.adagio.core.dao.data.batch.Batch; import fr.ifremer.adagio.core.dao.data.batch.CatchBatch; +import fr.ifremer.adagio.core.dao.data.batch.CatchBatchImpl; import fr.ifremer.adagio.core.dao.data.sample.Sample; import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip; import fr.ifremer.adagio.core.dao.data.survey.scientificCruise.ScientificCruise; @@ -11,6 +12,7 @@ import fr.ifremer.tutti.persistence.service.AbstractPersistenceService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.hibernate.LazyInitializationException; import org.hibernate.type.IntegerType; import org.hibernate.type.StringType; import org.springframework.dao.DataIntegrityViolationException; @@ -49,11 +51,20 @@ public void setDirty(CatchBatch catchBatch) { String synchronizationStatus = getDirtyValue(); - catchBatch.setSynchronizationStatus(synchronizationStatus); + if (log.isInfoEnabled()) { log.info("SetDirty catchBatch: " + catchBatch.getId()); } - setDirty(catchBatch.getFishingOperation().getFishingTrip()); + catchBatch.setSynchronizationStatus(synchronizationStatus); + + try { + setDirty(catchBatch.getFishingOperation().getFishingTrip()); + } catch (LazyInitializationException e) { + + // We need to have a loaded catchBatch, since it can come from a cache, prefer to reload it here + CatchBatchImpl loadedCatchBatch = load(CatchBatchImpl.class, catchBatch.getId()); + loadedCatchBatch.setSynchronizationStatus(synchronizationStatus); + } } public void setDirty(Sample sample) {
participants (1)
-
tchemit@users.forge.codelutin.com