簡體   English   中英

從soap Web服務返回ObjectId

[英]Return ObjectId from soap web service

我有2個java應用程序。 肥皂服務器(jax-ws)和肥皂客戶端。 Soap服務器使用spring mongo和mongoDb作為數據庫。 因此,在我的服務器上,我有方法可以重新命令所有公司

@WebMethod(operationName = "getCompanies")
public CompanyList getCompanies(){
    CompanyList companyList = new CompanyList();
    companyList.companyDocArrayList = Lists.newArrayList(orgStructService.getCompanyDocService().findAll());
    return companyList;
}

companyList類

public class CompanyList {
    public ArrayList<CompanyDoc> companyDocArrayList;
}

和CompanyDoc

public class CompanyDoc{
    @Id
    private ObjectId id;
    private String companyName;
//getter setter
}

所以,當我稱這種方法

 ClientService clientService = new ClientService Service().getClientServicePort();
        modelMap.addAttribute("companyList", clientService.getCompanies().getCompanyDocArrayList());

在List的clientService.getCompanies()中我得到奇怪的objectId,如com.web.client.services.ws.ObjectId@45ee7ab1(45ee7ab1 - 此值更改每個刷新頁面)但在數據庫中它是5369fefa1d6e6712866daaea

我做錯了什么?

似乎JAX-WS不知道如何將ObjectId對象轉換為String 我不知道你是如何使用你的文檔的,但我認為你可以在CompanyDoc對象中使用String而不是ObjectId 在插入數據時, Spring data會將String轉換為ObjectId ,反之亦然。

public class CompanyDoc{
    @Id
    private String id;
    private String companyName;
//getter setter
}

來自文檔的更多信息

下面概述了在使用MappingMongoConverter(MongoTemplate的默認值)時,將在映射到_id文檔字段的屬性上進行的類型轉換(如果有)。

  • 如果可能,使用Spring將在Java類中聲明為String的id屬性或字段轉換為ObjectId並將其存儲為ObjectId
    轉換器。 委派有效的轉換規則
    Mongo Java驅動程序。 如果無法將其轉換為ObjectId,則該值將作為字符串存儲在數據庫中。
  • 在Java類中聲明為BigInteger的id屬性或字段將使用Spring轉換為ObjectId並存儲
    轉換器。

暫無
暫無

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

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