繁体   English   中英

将Hibernate结果转换为对象列表

[英]Cast Hibernate result to a list of objects

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

List<Associate> associate = (List<Associate>)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> associate = (List<Associate>) 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(); 

也可以看看:

可以将ResultTransformer应用于本机SQL查询,从而允许它返回非托管实体。

sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))

上述查询将返回已实例化的CatDTO列表,并将NAME和BIRTHNAME的值注入其相应的属性或字段中。

来源: 链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM