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
对象使用转换器)。
只需使用HQL
(JPA
中的JPQL
)
获取全部EmployeeCardOrderLink
getSessionFactory().getCurrentSession()
.createQuery("select link from EmployeeCardOrderLink link").list();
查询 "from EmployeeCardOrderLink"
也适用于 Hibernate(不适用于 JPA)。
尝试进行 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
对象使用转换器)。
只需使用HQL
(JPA
中的JPQL
)
获取全部EmployeeCardOrderLink
getSessionFactory().getCurrentSession()
.createQuery("select link from EmployeeCardOrderLink link").list();
查询 "from EmployeeCardOrderLink"
也适用于 Hibernate(不适用于 JPA)。