@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = Throwable.class)
public boolean saveOrUpdate(final Rol rol) {
Session currentSession = getSession();
currentSession.clear();
Rol entity = null;
final Set<Flota> flotas = rol.getFlotas();
if (rol.getId() != null && this.get(rol.getId()) != null)
entity = this.get(rol.getId());
if (entity == null)
entity = rol;
if (entity == null)
return false;
entity.setInfoAdicional(rol.getInfoAdicional());
currentSession.saveOrUpdate(entity);
if (entity != null && flotas != null) {
for (Flota f : flotas) {
try {
Flota flota = (Flota) currentSession.get(Flota.class, f
.getId());
flota.getRoles().add(entity);
entity.getFlotas().add(flota);
currentSession.saveOrUpdate(flota);
} catch (Throwable t) {
log.error(t);
}
}