【问题标题】:Jpa createSQLQuery returns List<Object> instead of List<Employee>Jpa createSQLQuery 返回 List<Object> 而不是 List<Employee>
【发布时间】:2020-08-26 08:53:41
【问题描述】:

尝试进行 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;
}}

【问题讨论】:

    标签: sql hibernate jpa dao


    【解决方案1】:

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

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

    只需使用HQLJPQL in JPA

    获取所有EmployeeCardOrderLink

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

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

    【讨论】:

      猜你喜欢
      • 2022-07-11
      • 1970-01-01
      • 2019-12-20
      • 2016-05-04
      • 2014-07-27
      • 2020-06-12
      • 2022-01-14
      • 2013-10-28
      • 1970-01-01
      相关资源
      最近更新 更多