问题描述
尝试进行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
对象的转换器)。
只需使用HQL
(JPQL
中的JPA
)
获取所有EmployeeCardOrderLink
getSessionFactory().getCurrentSession()
.createQuery("select link from EmployeeCardOrderLink link").list();
查询"from EmployeeCardOrderLink"
也适用于Hibernate(因为JPA无效)。