Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Hibernate结果强制转换为对象列表_Java_Hibernate - Fatal编程技术网

Java 将Hibernate结果强制转换为对象列表

Java 将Hibernate结果强制转换为对象列表,java,hibernate,Java,Hibernate,我的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();

我的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();

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

您需要指定使用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的值注入其相应的属性或字段中


来源:

这里有没有办法使用DTO类而不是实体类?@Vlad添加.addEntityAssociate.class会影响性能?