Java 在hibernate查询中返回的是泛型对象,而不是类实体

Java 在hibernate查询中返回的是泛型对象,而不是类实体,java,hibernate,Java,Hibernate,我正在运行一个hibernate查询,它返回的是一个对象,而不是正确的实体对象。声明如下: public List getPriorBids(String rfpCD, String carrierCode) { String sqlString = " SELECT inland_cd, " + "rfp_cd, " + "carrier_cd, " +

我正在运行一个hibernate查询,它返回的是一个对象,而不是正确的实体对象。声明如下:

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),但稍后将它们转换到列表中似乎不会改变对象(至少在调试器显示的范围内)。