我試圖在MySQL上使用與RawRowMapper的queryRaw。它可以很好地處理字符串列,但是.mapRow()會在我添加一個長字段時扼殺它 - 它會嘗試將列名轉換爲數字。Ormlite RawRowMapper與MySQL的長字段扼流圈
doc for getRawRowMapper表示它是實驗性的,並提供反饋,但我只是一個蛋,所以如果其他人已經成功配置這個配置,我會更努力地嘗試之前,灰色的。
我的代碼如下:
@DatabaseField(dataType=DataType.LONG_STRING)
@Getter @Setter
private String formatted_message;
@DatabaseField(id=true)
@Getter @Setter
private long event_id;
public void getRowMapper() {
RawRowMapper<DbLog> rowMapper = daol.getRawRowMapper();
final String[] rowmap = { DbLog.EVENTID_FIELD, DbLog.MESSAGE_FIELD, DbLog.LEVEL_FIELD }; //
try {
rowMapper.mapRow(rowmap, rowmap);
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
它返回下面的堆棧跟蹤:
java.lang.NumberFormatException: For input string: "event_id"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:441)
at java.lang.Long.parseLong(Long.java:483)
at com.j256.ormlite.field.types.LongObjectType.parseDefaultString(LongObjectType.java:32)
at com.j256.ormlite.field.types.BaseDataType.resultStringToJava(BaseDataType.java:161)
at com.j256.ormlite.field.FieldType.convertStringToJavaField(FieldType.java:671)
at com.j256.ormlite.stmt.RawRowMapperImpl.mapRow(RawRowMapperImpl.java:33)
謝謝格雷,「這不再是實驗」,加上「你想做什麼」只是我需要的提示。基本上我只是不相信我的情況和我發現的例子一樣簡單,並且希望使它變得複雜。發佈了工作代碼,但不值得閱讀 - 使用RawRowMapper是完全標準的。 –