如何解决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
对象的转换器)。
只需使用HQL
(JPQL
中的JPA
)
获取所有EmployeeCardOrderLink
getSessionFactory().getCurrentSession()
.createQuery("select link from EmployeeCardOrderLink link").list();
查询"from EmployeeCardOrderLink"
也适用于Hibernate(因为JPA无效)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。