我使用LocalContainerEntityManagerFactoryBean
和OracleUCPConfig
我将类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();