public ModalitaRimborso getModalitaRimborso(String codiceModalitaRimborso, String codiceProdotto,
long codiceSegnalatore) {
DetachedCriteria criteria = DetachedCriteria.forClass(ModalitaRimborso.class);
criteria.add(Restrictions.eq("codiceModalitaRimborso", codiceModalitaRimborso));
criteria.add(Restrictions.eq("codiceProdotto", codiceProdotto));
Disjunction or = Restrictions.disjunction();
Conjunction andSegnalatore = Restrictions.conjunction();
andSegnalatore.add(Restrictions.eq("flagTabellaStandard", "S"));
andSegnalatore.add(Restrictions.eq("codiceSegnalatore", codiceSegnalatore));
or.add(andSegnalatore);
Conjunction andSegnalatoreN = Restrictions.conjunction();
andSegnalatoreN.add(Restrictions.eq("flagTabellaStandard", "N"));
andSegnalatoreN.add(Restrictions.eq("codiceSegnalatore", new Long(0)));
or.add(andSegnalatoreN);
criteria.add(or);
criteria.add(Restrictions.eq("legalEntity", legalEntity).ignoreCase());
criteria.add(Restrictions.eq("organizationUnit", organizationUnit).ignoreCase());
List<ModalitaRimborso> result = getHibernateTemplate().findByCriteria(criteria);
return (result != null && result.size() > 0 ? result.get(0) : null);