EntityManager createQuery与单列抛出类型错误



我使用LocalContainerEntityManagerFactoryBeanOracleUCPConfig

我将类EmployeeEntity.java映射到表employee

我写了一个createQuery代码为

Query query = em.createQuery("select id from Employee", EmployeeEntity.class);
query.getResultList()

我得到错误作为:

Type specified for TypedQuery [EmployeeEntity] is incompatible with [java.lang.String]

如何解决这个问题?

我想从表中获取所有id而不需要检索任何其他字段

——编辑——

我通过将JQL更改为JPQL来解决这个问题

Query query = em.createQuery("select new EmployeeEntity(id) from Employee", EmployeeEntity.class);
query.getResultList()

您正在映射id到类型EmployeeEntity,如果您检查您的查询,您只提取id而不是一切:select id from Employee。您可以通过将查询更改为:

来修复此问题。
Query query = em.createQuery("select e from Employee e", EmployeeEntity.class);

如果您只需要id列,可以这样做:

TypedQuery<String> query = em.createQuery("select e.id from Employee e", String.class);
List<String> ids = query.getResultList();

createQuery()的第二个参数是查询结果的类型。在您的示例中,结果类型是String(String的列表),因为您只对id列进行了SELECT

所以这应该可以工作:

Query query = em.createQuery("select e.id from Employee e", String.class);
List<String> ids = query.getResultList();

相关内容

  • 没有找到相关文章

最新更新