2011-11-11 4 views
1

組み合わせて、互換性のないデータ型:JDBCExceptionReporter - 次のコードを実行している場合 - 私はエラー「の組み合わせで互換性のないデータ型JDBCExceptionReporter」を取得

public Collection<SensorReading> getLastReadings(int[] sensorIds) 
    throws DataAccessException { 
      StringBuilder sb = new StringBuilder(); 
    sb.append("SELECT r "); 
    sb.append("FROM Sensor AS s, SensorReading AS r "); 
    sb.append("WHERE s.id IN ("); 
    for(int sensId:sensorIds){ 
     sb.append("'"); 
     sb.append(sensId); 
     sb.append("',"); 
    } 
    //strip off the last comma 
    sb.setLength(sb.length() -1); 
    //build the rest of the query 
    sb.append(") AND s.id = r.sensorId "); 
    sb.append(" AND r.readingTimestampUtc >= s.lastBeaconUtc "); 
    List<SensorReading> readings = getHibernateTemplate().find(sb.toString()); 
    //map to hold only the latest result 
    Map<Integer, SensorReading> readingsMap = new HashMap<Integer, SensorReading>(); 
    //flash through the readings and make sure there's only one per sensor ID 
    for(SensorReading rdg:readings){ 
     Integer sensorId = rdg.getSensorId(); 
     SensorReading reading = readingsMap.get(sensorId); 
     if(reading==null){ 
      readingsMap.put(sensorId, rdg); 
     } 
     else{ 
      //replace if the new reading is later 
      if(reading.getReadingTimestampUtc().after(rdg.getReadingTimestampUtc())){ 
       readingsMap.put(sensorId, reading); 
      } 
     } 
    } 
    return readingsMap.values(); 
} 

センサIDとsensorreading sensoridをすべての整数があり、他方が参加した日付です。なぜ私はこれを取得しているかもしれない任意のアイデア?

+0

の内側にあってはならない整数の場合"上記のエラー"? –

答えて

1

Yikes!問題は、リスト内のIDの周りの引用符でした。

これを正しく冬眠しないのはなぜですか?

2

sensorIdは、HQLはSQL or HQLことが任意のクエリでは

for(int sensId:sensorIds){ 
     // sb.append("'"); 
     sb.append(sensId); 
     // sb.append("',"); 
     sb.append(","); 
} 

以下のようにする必要があり、整数はあなたが言うとき、あなたが参照している何quotes(')

in (1,2,3) -- For the integers 

in ('a','b','c') -- For the char types 
関連する問題