Disjunction ors = Restrictions.disjunction();
for (SearchCriteriaLogicProduct sclp : andCriteriaList) {
DetachedCriteria agenteCriteria = null;
Conjunction andsTestata = Restrictions.conjunction();
for (SearchCriteria sc : sclp.getSearchCriteriaList()) {
Conjunction andsAgente = null;
SimpleExpression simpleExpression = sc.getSimpleExpression();
if (sc.getValore() instanceof String)
simpleExpression.ignoreCase();
if (((SearchCriteriaWithEntity) sc).getEntity() == AgenteTabellaFinanziaria.class) {
// Aggiungo condizioni di and alla subquery della testata
if (agenteCriteria == null) {
agenteCriteria = DetachedCriteria.forClass(AgenteTabellaFinanziaria.class);
agenteCriteria.setProjection(Projections.property("testataTabellaFinanziaria.numeroTabellaFinanziaria"));
}
if (andsAgente == null) {
andsAgente = Restrictions.conjunction();
}
andsAgente.add(simpleExpression);
} else if (((SearchCriteriaWithEntity) sc).getEntity() == TestataTabellaFinanziaria.class) {
// Aggiungo condizioni di and su testata tabella finanziaria
if(sc.getCampo().equals("dataFineValidita")){
Disjunction orsDataFine = Restrictions.disjunction();