我正在运行一个hibernate查询,它返回一个Object而不是正确的实体对象。声明如下:
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;
}
显然,我正在尝试将其存储为Bid对象。我还有另一个对象,我应该将其存储为但是我收到一个错误,即无法找到列名称,尽管检查列名称是双重和三重以确保它们匹配。
答案 0 :(得分:4)
Query.list()
returns a raw List
object,而不是通用的List
。
您应该只能将其投射到List<Bid>
,并忽略不安全的投射警告。
我认为您混淆了一个返回原始List
的方法,其中List元素的实际运行时类型为Object
。仅仅因为List.get(i)
的编译时签名返回Object
并不意味着在运行时返回的元素的实际类型为Object
。
答案 1 :(得分:1)
如果使用JPA 2,您可以创建支持泛型的TypedQuery