package com.rjconsultores.ventaboletos.dao.hibernate; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.SessionFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import com.rjconsultores.ventaboletos.dao.CtrlSerieEmbarcadaDAO; import com.rjconsultores.ventaboletos.entidad.CtrlSerieEmbarcada; import com.rjconsultores.ventaboletos.entidad.DispositivoEmbarcada; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Estado; @Repository("ctrlSerieEmbarcadaDAO") public class CtrlSerieEmbarcadaHibernateDAO extends GenericHibernateDAO implements CtrlSerieEmbarcadaDAO { private static final Logger log = LoggerFactory.getLogger(CtrlSerieEmbarcadaHibernateDAO.class); @Autowired public CtrlSerieEmbarcadaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { setSessionFactory(factory); } @Override @Transactional public CtrlSerieEmbarcada suscribir(CtrlSerieEmbarcada entity) { try { this.getHibernateTemplate().save(entity); getHibernateTemplate().flush(); return entity; } catch (final HibernateException ex) { throw convertHibernateAccessException(ex); } } @Override @Transactional public CtrlSerieEmbarcada actualizacion(CtrlSerieEmbarcada entity) { entity = getHibernateTemplate().merge(entity); getHibernateTemplate().flush(); return entity; } public Boolean validaDispositivoEmpresaEstadoCadastrado(DispositivoEmbarcada dispositivo, Empresa empresa, Estado estado) { StringBuilder sb = new StringBuilder(); sb.append("select COUNT(se.ctrlSerieEmbarcadaId) "); sb.append("from CtrlSerieEmbarcada se "); sb.append("where se.activo = 1 "); sb.append("and se.dispositivoEmbarcada.dispositivoEmbarcadaId = :dispositivoEmbarcadaId "); sb.append("and se.empresaId = :empresaId "); sb.append("and se.estado.estadoId = :estadoId "); Query qry = getSession().createQuery(sb.toString()); qry.setLong("dispositivoEmbarcadaId", dispositivo.getDispositivoEmbarcadaId()); qry.setLong("empresaId", empresa.getEmpresaId()); qry.setLong("estadoId", estado.getEstadoId()); Number n = (Number) qry.uniqueResult(); if (n == null) { return false; } return n.longValue() > 0; } }