Author: echatellier Date: 2013-03-27 11:48:22 +0100 (Wed, 27 Mar 2013) New Revision: 182 Url: http://forge.codelutin.com/projects/cantharella/repository/revisions/182 Log: Fix exceptions during index update Modified: trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/model/search/IndexEventListener.java Modified: trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/model/search/IndexEventListener.java =================================================================== --- trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/model/search/IndexEventListener.java 2013-03-26 16:10:57 UTC (rev 181) +++ trunk/cantharella.data/src/main/java/nc/ird/cantharella/data/model/search/IndexEventListener.java 2013-03-27 10:48:22 UTC (rev 182) @@ -28,6 +28,8 @@ import nc.ird.cantharella.data.model.CampagnePersonneDroits; import nc.ird.cantharella.data.model.Lot; import nc.ird.cantharella.data.model.LotPersonneDroits; +import nc.ird.cantharella.data.model.Personne; +import nc.ird.cantharella.data.model.utils.CompositeId; import org.hibernate.Session; import org.hibernate.event.spi.AbstractEvent; @@ -90,16 +92,21 @@ * @param entity current entity * @param id entity id */ + @SuppressWarnings("unchecked") protected void reIndexEntity(AbstractEvent event, Object entity, Serializable id) { Session session = event.getSession(); if (entity instanceof LotPersonneDroits) { - Lot lot = ((LotPersonneDroits) entity).getId().getPk1(); - lot = (Lot) session.merge(lot); - super.processWork(lot, id, WorkType.INDEX, event, false); + Lot lot = ((CompositeId<Lot, Personne>) id).getPk1(); + // must do refresh to avoid lazy or no entity with given identifier + // exception + session.refresh(lot); + super.processWork(lot, lot.getIdLot(), WorkType.INDEX, event, false); } else if (entity instanceof CampagnePersonneDroits) { - Campagne campagne = ((CampagnePersonneDroits) entity).getId().getPk1(); - campagne = (Campagne) session.merge(campagne); - super.processWork(campagne, id, WorkType.INDEX, event, false); + Campagne campagne = ((CompositeId<Campagne, Personne>) id).getPk1(); + // must do refresh to avoid lazy or no entity with given identifier + // exception + session.refresh(campagne); + super.processWork(campagne, campagne.getIdCampagne(), WorkType.INDEX, event, false); } } }
participants (1)
-
echatellier@users.forge.codelutin.com