JPA createSQLQuery返回List <Object>而不是List <Employee>

问题描述

尝试进行sql查询以获取结果类“ EmployeeCardOrderLink”的列表。但是这段代码总是向我返回一个对象列表。演员表无效。我在此列表中得到了正确的数据,但这只是对象。在调试中,我可以调用方法(想法建议根据类的接口),但是然后我得到“类Object没有这种方法”。而且我不能使用TypedQuery,因为我有旧的JPA版本,它不支持它。

@Repository
public class EmployeeCardOrderLinkDAOImpl extends AbstractBasicDAO<EmployeeCardOrderLink> implements EmployeeCardOrderLinkDAO {
 //....
@Override
    public List<EmployeeCardOrderLink> getLinksByOrderNumber(Integer num) {
     List<EmployeeCardOrderLink> result = (ArrayList<EmployeeCardOrderLink>) getSessionFactory().getCurrentSession().createSQLQuery("select * from employee_card_order_links " +
                "where trip_order_id = " +  num).list();
       return result;
}}

解决方法

如果使用JPA,则使用Hibernate(而不是Session)。 Hibernate当然是JPA的提供者。您必须使用EntityManager和其他相关内容才能使用JPA

这里不需要SQL。 SQL总是返回对象列表(如果您不使用到DTO对象的转换器)。

只需使用HQLJPQL中的JPA

获取所有EmployeeCardOrderLink

getSessionFactory().getCurrentSession()
    .createQuery("select link from EmployeeCardOrderLink link").list();

查询"from EmployeeCardOrderLink"也适用于Hibernate(因为JPA无效)。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...