Jpa createSQLQuery返回列表<;对象>;而不是列表<;员工>;

Jpa createSQLQuery返回列表<;对象>;而不是列表<;员工>;,sql,hibernate,jpa,dao,Sql,Hibernate,Jpa,Dao,尝试进行sql查询以获取“EmployeeCardOrderLink”类的列表。但这段代码总是返回一个对象列表。石膏不起作用。我在这个列表中得到了正确的数据,但它只是一个对象。在调试中,我可以调用方法(根据类的接口),但随后我得到“类对象并没有这样的方法”。我不能使用TypedQuery,因为我有旧的JPA版本,它不支持这个 @Repository public class EmployeeCardOrderLinkDAOImpl extends AbstractBasicDAO<Empl

尝试进行sql查询以获取“EmployeeCardOrderLink”类的列表。但这段代码总是返回一个对象列表。石膏不起作用。我在这个列表中得到了正确的数据,但它只是一个对象。在调试中,我可以调用方法(根据类的接口),但随后我得到“类对象并没有这样的方法”。我不能使用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;
}}
@存储库
公共类EmployeeCardOrderLinkDAOImpl扩展了AbstractBasicDAO实现EmployeeCardOrderLinkDAO{
//....
@凌驾
公共列表getLinksByOrderNumber(整数){
列表结果=(ArrayList)getSessionFactory().getCurrentSession().createSQLQuery(“从员工\卡片\订单\链接中选择*”+
“where trip_order_id=“+num).list();
返回结果;
}}
如果您使用的是
会话
,则使用Hibernate(而不是
JPA
)。Hibernate当然是JPA的提供者。您必须使用
EntityManager
和其他相关的东西才能使用
JPA

这里不需要SQL。SQL总是返回对象列表(如果不使用transformers to
DTO
对象)

只需使用
HQL
JPA
中的
JPQL

要获取所有
EmployeeCardOrderLink

getSessionFactory().getCurrentSession()
    .createQuery("select link from EmployeeCardOrderLink link").list();
查询
“来自EmployeeCardOrderLink”
也适用于Hibernate(对于JPA不起作用)