Tengo un problemilla al ejecutar una transacción. Mi problema es que tengo un metodo java en el que realizao unos DELETE y luego un INSERT, pero al ejecutarlo, hibernate me esta ejecutando primero el INSERT y luego los DELETES, necesito que me haga primero los DELETES ya que el insert puede contener un valor de las filas que voy a eliminar, y como la columna es unica pues me salta una exception y no me lo hace...
el método que realiza los DELETES y el INSERT es:
Código:
Las transacciones las tengo configuradas de la siguiente forma: public boolean mergeValues(List<Geography> geographies, Geography geography) throws MeServiceException {
try {
int eliminadas = 0;
if (geographies != null && geographies.size() > 0) {
for (Geography g : geographies) {
boolean eliminada = geographyDAO.delete(g);
if (eliminada) {
eliminadas++;
}
}
} else {
eliminadas = 0;
}
int guardado = geographyDAO.save(geography);
if (eliminadas >= 2 && guardado == 1) {
return true;
} else {
return false;
}
} catch (ConstraintViolationException ex) {
throw new MeServiceConstraintViolationException(ex);
} catch (Exception ex) {
throw new MeServiceException(ex);
}
}
Código XML:
Ver original
<aop:config> <aop:pointcut id="geographyListMethods" expression="execution(* es.unav.fondospersonales.service.administracion.GeographyListService.*(..))" /> <aop:advisor advice-ref="geographyTxAdvice" pointcut-ref="geographyListMethods" /> </aop:config> <tx:advice id="geographyTxAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true" /> <tx:method name="merge*" propagation="REQUIRED" rollback-for="MeServiceException" /> <tx:method name="remove*" propagation="REQUIRED" rollback-for="MeServiceException" /> <tx:method name="update*" propagation="REQUIRED" rollback-for="MeServiceException" /> <tx:method name="add*" propagation="REQUIRED" rollback-for="MeServiceException" /> </tx:attributes> </tx:advice>
Alguien sabe porque me hace primero los INSERTS??
Muchas gracias!!


