У меня есть gameid, hometeamid, visitorteamid, winnerid все как int.
Запрос
Update game set winnerid=hometeamid where gameid=1;
отлично работает на верстаке Mysql.
Я пытаюсь запустить то же самое из подготовленного оператора без успеха, выдавая ошибку
java.sql.BatchUpdateException: Incorrect integer value: 'hometeamid' for column 'winnerId' at row 1
, так как "hometeamid" передается в виде строки.
код выглядит следующим образом
String query = "update `match` set winnerid= ? where gameid=?";
Map<Integer, String> data = getMap();//gameid and either 'hometeamid' or 'awaytemid'
try {
PreparedStatement ps = connection.prepareStatement(query);
for (Map.Entry<Integer, String> entry : data.entrySet()) {
ps.setObject(1, entry.getValue());
ps.setInt(2, entry.getKey());
ps.addBatch();
}
ps.executeBatch();
} catch (SQLException e) {
logger.error(e, e);
} finally {
closeQuietly(connection);
}
Как правильно запустить обновление из PreparedStatement?
Любые другие рекомендации по улучшению приветствуются.