在hibernate查询中返回的是通用对象而不是类实体

时间:2011-05-06 14:23:31

标签: java hibernate

我正在运行一个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对象。我还有另一个对象,我应该将其存储为但是我收到一个错误,即无法找到列名称,尽管检查列名称是双重和三重以确保它们匹配。

2 个答案:

答案 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