如何將本機查詢結果轉換為JPA 中的POJO 類別集合
在使用JPA 時,有時需要執行本機查詢存取無法使用JPA 標準查詢有效檢索的資料。如果本機查詢的結果是值的集合,則可能需要將每個結果物件轉換為 POJO(普通舊 Java 物件)類別以進行進一步處理。
使用已對應的直接轉換實體
在 JPA 2.0 及更早版本中,無法直接將本機查詢結果轉換為 POJO 類別。然而,JPA 2.1 引入了 @SqlResultSetMapping 註解,它允許將原生查詢結果對應到 POJO。
要使用此功能,必須在實體類別中定義 @SqlResultSetMapping 註解,指定查詢到的類別應映射結果以及與類別的屬性相對應的列。例如:
@SqlResultSetMapping( name = "JediResult", classes = { @ConstructorResult(targetClass = Jedi.class, columns = {@ColumnResult(name = "name"), @ColumnResult(name = "age")}) } )
使用此註解,您可以執行本機查詢並使用@SqlResultSetMapping 註解指定到POJO 類別的對應:
Query query = em.createNativeQuery("SELECT name, age FROM jedi_table", "JediResult"); @SuppressWarnings("unchecked") List<Jedi> jedis = query.getResultList();
使用手動對映進行間接對應轉換
如果JPA 2.1不可用,可以使用反射將本機查詢結果手動對應到 POJO。這涉及創建一個方法,該方法採用元組數組(由本機查詢返回)和 POJO 類別作為輸入,並使用反射使用元組中的值創建 POJO 類別的實例。然後可以使用此方法將每個結果對應到 POJO 物件。
使用命名本機查詢
將本機查詢結果轉換為 POJO 的另一個選項是使用命名本機查詢。命名本機查詢可讓您在實體類別中定義本機查詢並指定查詢的結果類別。此結果類別可以是 POJO 或實體類別。透過使用命名的本機查詢,您可以避免使用反射並直接將結果對應到 POJO 類別。
以上是如何將本機查詢結果轉換為 JPA 中的 POJO 類別集合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!