簡體   English   中英

將對象數組映射到Bean

[英]Map Object Array to a Bean

我通過JPA進行SQL查詢並獲取對象數組列表。 我希望將這些對象數組映射到bean中。

例如,我的查詢給我以下輸出。

List<Object[]> list = // myWorkingJpaQuery;
// list is of length 2. 
// Each Object array always holds a Long in index 0, 
// a TimeStamp in index 1 and a String in index 2. 

我不想讀取這些值並進行強制轉換,而是希望將其映射到以下類:

class ExampleClass{
    //all these variables matches the aliases in myWorkingJpaQuery.
    Long id;
    TimeStamp ts;
    String name;
    // get set
}  

試圖使用上述類,我改變了JPA方法的返回類型並按如下方式在調用類中進行了分配,但這是行不通的。

List<ExampleClass> list = // myWorkingJpaQuery with List<ExampleClass> as return type;

有沒有辦法做到這一點? 如果我堅持使用Object Array,但只是嘗試不使用Objects和Casting,則目前工作正常。 供參考,我正在使用Spring。

您的ExampleClass是否有構造函數? 如果是,您應該可以執行以下操作:

List<ExampleClass> myList = new ArrayList<ExampleClass>();
List<Object[]> list = // myWorkingJpaQuery;
for (int i = 0; i < list.size(); i++) {
        ExampleClass obj = new ExampleClass(list.get(i)[0],list.get(i)[1],list.get(i)[2]);
        myList.add(obj);
    }

和你完成

假設您使用的是本機查詢(否則,ORM工具將自動為您執行此操作):

您可能有這樣的代碼:

 EntityManager em = ...
 Query q = em.createNativeQuery("SELECT ...");
 List<Object[]> results = q.getResultList();

在這種情況下,您可以考慮將其他參數傳遞給createNativeQuery方法:

 Query q = em.createNativeQuery("SELECT...", ExampleClass.class);
 List<ExampleClass> results = q.getResultList();

對於更復雜/自定義的映射,請考慮使用結果集映射功能

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM