我有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
我做错了什么?
答案 0 :(得分:2)
似乎JAX-WS
不知道如何将ObjectId
对象转换为String
。我不知道您如何使用您的文档,但我认为您可以在String
对象中使用ObjectId
代替CompanyDoc
。当您插入数据时,Spring data
会将String
转换为ObjectId
,反之亦然。
public class CompanyDoc{
@Id
private String id;
private String companyName;
//getter setter
}
的更多信息
以下概述了将要进行的类型转换(如果有) 使用时映射到_id文档字段的属性 MappingMongoConverter,MongoTemplate的默认值。
- 在Java类中声明为String的id属性或字段将转换为ObjectId并存储为ObjectId(如果可能,使用Spring) 转换器。有效转换规则委托给
Mongo Java驱动程序。如果它无法转换为ObjectId,那么 该值将作为字符串存储在数据库中。- Java类中声明为BigInteger的id属性或字段将使用Spring转换为ObjectId并存储为 转换器。