查询为:
@Override
public Collection<? extends String> getLocalizadoresMigradoSolr(
Set<Integer> idEventosSet, Set<Integer> idSesionSet, Set<Integer> idCanalSet, Set<Integer> idPuntoVentaSet,
Set<Integer> idTerminalSet, Set<Integer> idMetodoEntregaSet, Set<Integer> idTipoProductoSet) {
StringBuilder query = new StringBuilder();
query.append("SELECT DISTINCT(orden.localizador) ");
query.append("FROM ob_compras.compras_datos_orden orden ");
query.append("INNER JOIN ob_compras.compras_producto_orden producto ON producto.idOrden = orden.idOrden ");
query.append("WHERE ");
query.append("producto.idSesion IN(?)");
query.append(" OR ");
query.append(" producto.idEvento IN(?)");
query.append(" OR");
query.append(" orden.idCanal IN(?)");
query.append(" OR");
query.append(" orden.idPuntoVenta IN(?) ");
query.append("OR ");
query.append("orden.idTerminal IN(?)");
query.append(" OR");
query.append(" orden.metodoEntrega IN(?)");
query.append(" OR");
query.append(" orden.metodoEntrega IN(?)");
List<String> result = jdbcTemplate.queryForList(query.toString(), String.class, idSesionSet, idEventosSet, idCanalSet,
idPuntoVentaSet, idTerminalSet, idMetodoEntregaSet, idTipoProductoSet);
return result;
}
我得到了:
SELECT DISTINCT(orden.localizador) FROM ob_compras.compras_datos_orden orden INNER JOIN ob_compras.compras_producto_orden producto ON producto.idOrden = orden.idOrden WHERE producto.idSesion IN(_binary'¬í\0sr\0java.util.HashSetºD…•–¸·4\0\0xpw\0\0\0? @\0\0\0\0\0\0x') OR producto.idEvento IN(_binary'¬í\0sr\0java.util.HashSetºD…•–¸·4\0\0xpw\0\0\0?@\0\0\0\0\0\0x') OR orden.idCanal IN(_binary'¬í\0sr\0java.util.HashSetºD…•–¸·4\0\0xpw\0\0\0?@\0\0\0\0\0\0x') OR orden.idPuntoVenta IN(_binary'¬í\0sr\0java.util.HashSetºD…•–¸·4\0\0xpw\0\0\0?@\0\0\0\0\0\0x') OR orden.idTerminal IN(_binary'¬í\0sr\0java.util.HashSetºD…•–¸·4\0\0xpw\0\0\0?@\0\0\0\0\0\0x') OR orden.metodoEntrega IN(_binary'¬í\0sr\0java.util.HashSetºD…•–¸·4\0\0xpw\0\0\0?@\0\0\0\0\0\0x') OR orden.metodoEntrega IN(_binary'¬í\0sr\0java.util.HashSetºD…•–¸·4\0\0xpw\0\0\0?@\0\0\0\0\0\0x');
为什么集已被序列化?它应该在sql查询上填充动态值,但它不会。相反,如果序列化所有参数集并考虑缓慢而丑陋的查询。
答案 0 :(得分:2)
不支持集合和数组。请改用namedParameterJdbcTemplate
见
How to use SELECT IN clause in JDBCTemplates?
和
http://forum.spring.io/forum/spring-projects/data/43428-in-clause-with-jdbctemplate