2014-05-07 76 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