Обычно вы не включаете одинарные кавычки для параметризованных запросов.Попробуйте:
VALUES(?1, ?2)
(без кавычек вокруг ?1
).В противном случае трудно (как для читателей, так и для анализаторов) определить, хотите ли вы вставить параметр 1 или литеральное значение ?1
.
Вам также следует проверить возвращаемое значение из executeUpdate()
, чтобы увидеть, думает ли оноэто повлияло на любые строки.Это, вероятно, даст вам ноль, но все равно стоит проверить.
И, наконец, я думаю, что даты требуют особой обработки в соответствии с:
setParameter(1, new java.util.Date(), TemporalType.DATE);
Это потому, что объект Java Date не являетсядата вообще, кроме отметки времени - вам нужно убедиться, что вы выбрали правильный тип временного объекта, чтобы в запросе помещалось правильное значение.
Короче говоря, что-то вроде:
int affected = em.createNativeQuery(
"INSERT INTO rst_offline_transaction_batch (" +
" created_date," + // ?1
" user_id" + // ?2
") VALUES (?1,?2)"
)
.setParameter(1, new java.util.Date(), TemporalType.DATE)
.setParameter(2, user_id)
.executeUpdate();
// Check affected.