Я использую библиотеку JDBI v2 для передачи данных в MySQL. Моя задача - вставить новую строку, если «id» не существует, или обновить, если это более новые данные, как показано ниже:
@SqlBatch("insert into saved_game.<table>(id, data, play_time) values (:id, :data, :playTime) on duplicate key update "
+ "data = if(play_time < values(play_time), values(data), data), play_time = if(play_time < values(play_time), values(play_time), play_time)")
@BatchChunkSize(1000)
public abstract void insert(@Define("table") String table, @BindBean Collection<SavedGameBean> beans);
Но при запуске выдается исключение:
Caused by: java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1819) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1281) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at snaq.db.CachedStatement.executeBatch(CachedStatement.java:435) ~[dbpool-7.0.1-jdk7.jar:?]
at org.skife.jdbi.v2.PreparedBatch.internalBatchExecute(PreparedBatch.java:196) ~[jdbi-2.77.jar:2.77]
... 41 more
Как я мог это исправить?