JPA 1与单元测试支持的Hsqldb 1.8中的OpenJPA 1.2.2。以下JPA QL无法在ID列表中使用“IN”不起作用。JPA QL“IN”收集不适用于openjpa 1.2.2
@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:表在声明中没有找到[更新VOUCHER_PROCESSED T0设置t1.settlement_id =? WHERE(t0.voucher_id IN(?))]
VOUCHER_PROCESSED表正在hsqldb中创建,同时测试运行,因此上述错误似乎是错误的和误导性的。
建议?
任何人都可以指出代码格式化程序应该在这里工作吗? – pritam 2011-05-10 16:13:09
我更正了格式,请查看[formatting help](http://stackoverflow.com/editing-help)。 – 2011-05-10 16:16:33
尝试Databasename.TABLENAME也不需要使用StringUtils,查询[1] setParameterList需要一个集合,上次我检查 – Narayan 2011-05-10 16:33:13