将Hibernate结果转换为对象列表

我在我的DAO中有一个看起来像这样的hibernate调用

List associate = (List)session.createSQLQuery("SELECT * FROM associates WHERE fk_id = :id AND fk_associate_id = (SELECT id FROM users WHERE fk_user_type = 2)").setParameter("id", id).list(); 

我收到一个错误,说我无法将结果列表强制转换为模型类型Associate。 我不明白为什么会这样。 我只返回关联表中的字段。

您需要使用addEntity()指定结果应转换为的实体类,因为您正在执行对实体一无所知的SQL查询:

 List associate = (List) session.createSQLQuery( "SELECT * FROM associates WHERE fk_id = :id AND fk_associate_id = (SELECT id FROM users WHERE fk_user_type = 2)") .addEntity(Associate.class) .setParameter("id", id).list(); 

也可以看看:

  • 18.1.2。 实体查询