Boa noite,
Meu IN/NOT IN está funcionando perfeitamente:
subSelect = String.format("SELECT DISTINCT %s FROM %s WHERE %s = %d", filter.getString("fieldSubSelect"), filter.getString("tableRelated"), filter.getString("fieldWhere"), values.get(0));
valuesSubSelect = hibernateTemplate.find(subSelect);
criteria.add(Restrictions.in(field, valuesSubSelect));
Mas agora caí em um porém:
Quando o valuesSubSelect retorna uma lista de valores, beleza, funciona perfeitamente. Mas nem sempre esse subSelect trará dados, as vezes virá vazio, e aí que está o problema, o IN será montado IN() com parametro vazio. Ocorre erro de sintaxe no IN/NOT IN:
41541 ["http-bio-8080"-exec-4] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1064, SQLState: 42000
41541 ["http-bio-8080"-exec-4] ERROR org.hibernate.util.JDBCExceptionReporter - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 1
Hibernate: select this_.id as id2_0_, this_.nome as nome2_0_ from modulo this_ where not (this_.id in ())
Alguma sugestão?
Obrigado!