【发布时间】:2015-07-08 14:52:28
【问题描述】:
我通常在我的存储库包中这样做:
public void setDataSource(DataSource dataSource) {
procGetDeviceDetails = new SimpleJdbcCall(dataSource)
.withProcedureName("web_Device_Details")
.returningResultSet("results", BeanPropertyRowMapper.newInstance(Device.class));
}
public Device deviceDetails(Map input) {
Map m = procGetDeviceDetails.execute(input);
List<Device> list = (List<Device>) m.get("results");
if (list.size() > 0) {
return list.get(0);
}
return null;
}
我希望在第二种方法中删除样板,因此我已切换到 executeObject()。我试过这个。都失败了。
public Device deviceDetails(Map input) {
Device device = procGetDeviceDetails.executeObject(Device.class, input);
return device;
}
public Device deviceDetails(Map input) {
List<Device> device = procGetDeviceDetails.executeObject(List.class, input);
return device.get(0);
}
问题是我的设备是空的。我还尝试仅声明 Object 而不是 Device 或 List ,它仍然为空。我做错了什么?
我知道结果已正确映射到 Device 类,因为我看到 procGetDeviceDetails (SimpleJdbcCall) 已声明 RowParameters 等于 {#result-set-1=org.springframework.jdbc.core.BeanPropertyRowMapper@79095fd7} 并且 BeanPropertyRowMapper 已映射类集到设备。
似乎泛型或其他东西困扰着我。我在这里找到了例子。 https://jira.spring.io/browse/SPR-7270
谢谢!
【问题讨论】:
标签: spring spring-mvc spring-data spring-jdbc