2017-06-01 50 views
0

我用xml-rpc做請求。通過Java的Odoo請求

List singleTasks = Arrays.asList((Object[]) objClient.execute("execute_kw", 
      Arrays.asList(db, uid, password, "project.task", "search_read", 
        Arrays.asList(Arrays.asList(
          Arrays.asList("active", "=", true))), 
        new HashMap() {{ 
         put("fields", Arrays.asList("display_name", "total_hours", "project_id", "user_id")); 
        }} 
       ))); 

這不幸返回以下結果:

[{PROJECT_ID = [Ljava.lang.Object; @ 759ebb3d,USER_ID = [Ljava.lang.Object; @ 484b61fc,ID = 23,total_hours = 11.0,display_name = TEST}]

我不知道如何使用或轉換Ljava.lang.Object,這是什麼意思,我怎麼得到真正的ID?

我認爲它與該領域的類型有關,因爲它可以是one2many,many2one或many2many領域。

回答

1

我有同樣的情況,我發現這個查詢。所以我決定實施迴應。

假設關係many2one,該查詢返回相關的對象,因此它必須單獨考慮,那就是,你必須執行以下查詢(例如用於國家):

final Map<String, Object> c = (Map<String, Object>) 
((Object[])models.execute("execute_kw", Arrays.asList(db, uid, password, 
           "project.task", 
     "search_read",Arrays.asList(Arrays.asList(Arrays.asList("id","=", "id_project.task"))),new HashMap<String, Object>() {{ 
             put("fields", Arrays.asList(            
              "project_id" 
             )); 
            }} 
         )))[0]; 

//它取值爲 Object [] as =(Object [])c.get(「project_id」);

問候。