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 : 문에없는 표 [UPDATE VOUCHER_PROCESSED의 T0의 SET t1.settlement_id =? WHERE (t0.voucher_id IN (?))]
위의 오류가 잘못 표시되어 오도 된 것처럼 테스트가 실행되는 동안 VOUCHER_PROCESSED 테이블이 hsqldb에 생성됩니다.
제안 사항? JPA 사양 "IN (:voucherIds)
"와 같은 쿼리 setParameter()
에서 컬렉션을 사용 허용 IN
이를 구성 정의하지
않습니다 (내가 틀렸다면 수정하시기 바랍니다) 최대 절전 모드와
.setParameter("voucherIds", voucherIds)
일을하지만, :
코드 포맷터가 여기에서 작동하는 방법을 알아낼 수 있습니까? – pritam
서식을 수정했지만 [서식 도움말] (http://stackoverflow.com/editing-help)을 확인하십시오. –
Databasename.TABLENAME 또한 StringUtils를 사용할 필요가 없다. Query [1] setParameterList가 콜렉션을 취한다. 내가 마지막으로 체크했을 때 – Narayan