JPA 1 с OpenJPA 1.2.2 в модульном тестировании с поддержкой Hsqldb 1.8. Следующий JPA QL не работает с «IN» в Списке идентификаторов.
@Transactional
public void updateSettlementId(List<Long> voucherIds, Long settlementId) {
String query = "UPDATE VoucherProcessed vp SET vp.settlement.id=:settlementId where vp.voucher.id IN (:voucherIds)";
em.createQuery(query).setParameter("settlementId", settlementId)
.setParameter("voucherIds", StringUtils.join(voucherIds.iterator(), ","))
.executeUpdate();
}
java.sql.SQLException: таблица не найдена в операторе [UPDATE VOUCHER_PROCESSED t0 SET t1.settlement_id =? ГДЕ (t0.voucher_id IN (?))]
Таблица VOUCHER_PROCESSED создается в hsqldb во время выполнения теста, поэтому приведенная выше ошибка выглядит ошибочной и вводящей в заблуждение.
Предложения