Jpa createSQLQuery returns List<Object> 而不是 List<Employee>

Jpa createSQLQuery returns List<Object> instead of List<Employee>

尝试进行 sql 查询以获得 Class“EmployeeCardOrderLink”列表的结果。但是这段代码总是 returns 我是一个对象列表。演员表不起作用。我在这个列表中得到了正确的数据,但它只是对象。在调试中我可以调用方法(想法建议根据我的 class 的接口),但后来我得到“class 对象没有这样的方法”。而且我不能使用 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;
}}

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

这里不需要 SQL。 SQL 总是 returns 对象列表(如果你不对 DTO 对象使用转换器)。

只需使用HQLJPA中的JPQL

获取全部EmployeeCardOrderLink

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

查询 "from EmployeeCardOrderLink" 也适用于 Hibernate(不适用于 JPA)。