2016-07-13 2 views
0

Warum bekomme ich diese Ausnahme von unten Code?java.sql.SQLException: Operand sollte 1 Spalte (n) enthalten - Spring

List<String> getId=jdbcTemplate.queryForList("select Id from MYTable", String.class); 
MapSqlParameterSource parameters = new MapSqlParameterSource(); 
parameters.addValue("sName", "AC"); 
parameters.addValue("ids", getId); 
List<MypojoClass> result = new ArrayList<>(); 
String query ="select CTime,HTime from MYTable where Type=:sName and Id in((:ids)) and CTime > CONVERT_TZ(date_format(now() - interval 1 month,'%Y-%m-01 00:00:01'),'+00:00', '-05:30');"; 
result = namedParameterJdbcTemplate.query(query, parameters, ParameterizedBeanPropertyRowMapper.newInstance(MypojoClass.class)); 

Ausnahme:

org.springframework.jdbc.BadSqlGrammarException) org.springframework.jdbc.BadSqlGrammarException: 
    PreparedStatementCallback; bad SQL grammar [ 
    select CTime,HTime from MYTable where Type=? and Id in((?, ?, ?, ?, ?)) and CTime > CONVERT_TZ(date_format(now() - interval 1 month,'%Y-%m-01 00:00:01'),'+00:00', '-05:30');]; nested exception is java.sql.SQLException: Operand should contain 1 column(s) 

Antwort

1

entfernen zusätzlichen Klammern aus IN

SELECT 
    CTime, 
    HTime 
FROM 
    MYTable 
WHERE 
    Type =? 
AND Id IN (?, ?, ?, ?, ?) 
AND CTime > CONVERT_TZ(date_format(now() - INTERVAL 1 MONTH,'%Y-%m-01 00:00:01'),'+00:00','-05:30'); 

Hinweis:

SELECT '1' IN ('2','1','3'); Result: 1(TRUE)See demo

SELECT '1' IN (('2','1','3')); Result: [Err] 1241 - Operand should contain 1 column(s)See demo

SELECT ('2','1','3') IN (('2','1','3')); Result: 1(TRUE)See demo

+0

Oh! Das habe ich nicht gesehen! Danke. – MMMMS

Verwandte Themen