Java 在hibernate查询中返回的是泛型对象,而不是类实体
我正在运行一个hibernate查询,它返回的是一个对象,而不是正确的实体对象。声明如下:Java 在hibernate查询中返回的是泛型对象,而不是类实体,java,hibernate,Java,Hibernate,我正在运行一个hibernate查询,它返回的是一个对象,而不是正确的实体对象。声明如下: public List getPriorBids(String rfpCD, String carrierCode) { String sqlString = " SELECT inland_cd, " + "rfp_cd, " + "carrier_cd, " +
public List getPriorBids(String rfpCD, String carrierCode) {
String sqlString = " SELECT inland_cd, " +
"rfp_cd, " +
"carrier_cd, " +
"port_cd, " +
"max(iteration_nb) as iteration_nb " +
" FROM care.inland_bid " +
" WHERE rfp_cd = :rfpCode " +
" AND carrier_cd = :carrierCode " +
" GROUP BY inland_cd, rfp_cd, carrier_cd, port_cd " +
" ORDER BY inland_cd, carrier_cd";
SQLQuery sqlQuery = session.createSQLQuery(sqlString);
sqlQuery.setString("carrierCode",carrierCode);
sqlQuery.setString("rfpCode", rfpCD);
sqlQuery.addEntity(Bid.class);
List bids = sqlQuery.list();
return bids;
}
显然,我正试图将其存储为出价对象。我还有另一个对象,我应该将其存储为,但我得到一个错误,即无法找到列名,尽管我对列名进行了双重和三重检查以确保它们匹配。,而不是通用的列表
您应该能够将其强制转换为列表
,并忽略不安全强制转换警告
我认为您将返回原始列表的方法与列表元素的实际运行时类型Object
相混淆。仅仅因为List.get(i)
的编译时签名返回一个对象
,并不意味着在运行时返回的元素的实际类型是对象。,而不是一般的列表
您应该能够将其强制转换为列表
,并忽略不安全强制转换警告
我认为您将返回原始列表的方法与列表元素的实际运行时类型Object
相混淆。仅仅因为List.get(i)
的编译时签名返回一个对象
,并不意味着在运行时返回的元素的实际类型是Object
。如果使用JPA2,您可以创建一个TypedQuery
,如果使用JPA2,它支持泛型,您可以创建一个支持泛型的TypedQuery
,我认为addEntity(class)将对象的返回类型更改为指定的类类型(如果它能够适应的话)。我让它返回一个对象列表(去掉了addEntity),但是稍后将它们转换到列表中似乎不会改变对象(至少在调试器显示的范围内)。我认为addEntity(class)将对象的返回类型更改为指定的类类型(如果它能够适应的话)。我让它返回一个对象列表(去掉了addEntity),但稍后将它们转换到列表中似乎不会改变对象(至少在调试器显示的范围内)。