@SuppressWarnings("unchecked")
@Override
public Assicurazione getAssicurazioneByListaSessi(long numeroCompagnia, String codicePolizza, String tipoAssicurazione,
int durata, String[] sessi, int anni) {
DetachedCriteria criteria = DetachedCriteria.forClass(Assicurazione.class);
Conjunction conj = Restrictions.conjunction();
conj.add(Restrictions.eq("legalEntity", legalEntity).ignoreCase());
conj.add(Restrictions.eq("organizationUnit", organizationUnit).ignoreCase());
conj.add(Restrictions.eq("numeroCompagnia", numeroCompagnia));
conj.add(Restrictions.eq("codicePolizza", codicePolizza));
conj.add(Restrictions.eq("tipoAssicurazione", tipoAssicurazione));
conj.add(Restrictions.in("sessoIntestatario", sessi));
conj.add(Restrictions.eq("anniIntestatario", anni));
conj.add(Restrictions.le("durataMinimaContratto", durata));
Disjunction orDett = Restrictions.disjunction();
orDett = Restrictions.disjunction();
orDett.add(Restrictions.isNull("durataMassimaContratto"));
orDett.add(Restrictions.ge("durataMassimaContratto", durata));
conj.add(orDett);
criteria.add(conj);
List<Assicurazione> result = getHibernateTemplate().findByCriteria(criteria);
if (result != null && result.size() > 0)
return result.get(0);