【发布时间】:2019-03-20 13:30:29
【问题描述】:
我正在从 Hibernate 3 迁移到 Hibernate 5 版本。目前,我使用的是 5.4.0.Final 版本。
我对使用存储库方法deleteByAllPatientFlowGens的一项测试有疑问:
public void deleteByAllPatientFlowGens(List<PatientFlowGen> list) {
if (!list.isEmpty()) {
getEntityManager().createNamedQuery(DELETE_BY_ALL_PATIENT_FLOW_GENS_QUERY)
.setParameter("patient_flow_gens", list)
.executeUpdate();
}
}
它应该调用命名查询:
@NamedQuery(name = RequestedFlowGenSettings.DELETE_BY_ALL_PATIENT_FLOW_GENS_QUERY,
query = "delete from RequestedFlowGenSettings where patientFlowGen in :patient_flow_gens")
该方法接收包含两个元素的列表,但在日志中我看到两个参数都绑定为 1:
2019-03-19 04:44:16,855 DEBUG [main] SQL - delete from requested_flow_gen_settings where patient_flow_gen in (? , ?)
2019-03-19 04:44:16,858 TRACE [main] BasicBinder - binding parameter [1] as [BIGINT] - [2994]
2019-03-19 04:44:16,858 TRACE [main] BasicBinder - binding parameter [1] as [BIGINT] - [2995]
2019-03-19 04:44:16,864 ERROR [main] SqlExceptionHelper - The value is not set for the parameter number 2
使用以前的 Hibernate 版本 (3.6.3.Final) 一切正常。有日志:
2019-03-19 04:47:42,275 DEBUG [main] SQL - delete from requested_flow_gen_settings where patient_flow_gen in (? , ?)
2019-03-19 04:47:42,277 TRACE [main] BasicBinder - binding parameter [1] as [BIGINT] - 2996
2019-03-19 04:47:42,277 TRACE [main] BasicBinder - binding parameter [2] as [BIGINT] - 2997
附:我尝试使用 setParameterList 方法,但问题是一样的。
【问题讨论】:
标签: java sql sql-server hibernate