2014-05-07 75 views
0

我有2個java應用程序。肥皂服務器(jax-ws)和肥皂客戶端。肥皂服務器使用spring mongo和mongoDb作爲數據庫。 所以,在我的服務器我有reterns所有公司從soap web服務返回ObjectId

方法
@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()); 

在列表clientService.getCompanies()我得到了奇怪的OBJECTID像[email protected](45ee7ab1 - 這個值的變更都刷新頁面) 但在數據庫中它是5369fefa1d6e6712866daaea

我我做錯了嗎?

回答

2

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

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

更多信息下面簡單介紹一下什麼類型的轉換,如果有的話,將在 進行使用 MappingMongoConverter時映射到_id文檔字段屬性,默認爲MongoTemplate。

  • 一個ID屬性或字段聲明爲在Java類的字符串將被轉換爲和如果可能的話使用彈簧
    轉換器作爲一個存儲的ObjectId。有效的轉換規則被授予
    Mongo Java驅動程序。如果無法將其轉換爲ObjectId,則 該值將作爲字符串存儲在數據庫中。
  • 在Java類中聲明爲BigInteger的id屬性或字段將被轉換並存儲爲ObjectId,使用Spring
    Converter。
+0

謝謝。它有助於! – nabiullinas