2017-06-01 45 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”);

问候。