我正在使用LocalContainerEntityManagerFactoryBean和OracleUCPConfig
我有類EmployeeEntity.java映射到表員工
我寫了一個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()
uj5u.com熱心網友回復:
您正在映射id到 type 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();
uj5u.com熱心網友回復:
createQuery()的第二個引數是查詢結果的型別。在您的情況下,結果型別是String( Strings的串列),因為您只有SELECTcolumn id。
所以這應該有效:
Query query = em.createQuery("select e.id from Employee e", String.class);
List<String> ids = query.getResultList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/341277.html
