Я строю службу REST на Java, используя MongoDB (mongodb-java-driver
), Джерси и Джексон. Пример классов я использую заключается в следующем: РаботникуJava, MongoDB - Встроенный документ с REST
public class Employee extends BasicDBObject {
public Employee() {}
public Employee(String name, Company company) {
put("name", name);
put("company", company);
}
public String getName() {
return get("name").toString();
}
public Company getCompany() {
return (Company) get("company");
}
public void setCompany(Company company) {
put("company", company);
}
}
Компания
public class Company extends BasicDBObject {
public Company() {}
public Company(String name, String city) {
put("name", name);
put("city", city);
}
public String getName() {
return get("name").toString();
}
public String getCity() {
return get("city").toString();
}
}
и сервис REST
public class EmployeeRestSrv {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createEmployee(Employee employee) {
DBCollection employeesCollection = DataSource.getDbCollection("employees");
employeesCollection.setObjectClass(Employee.class);
// employee.company.name ?
employeesCollection.insert(employee);
return Response.ok().build();
}
}
DataSource класс, который на самом деле создает соединение с MongoDB.
Если я посылаю этот объект JSON с POST
{
"employee" : "foo",
"company" : {
"name" : "foocompany",
"city" : "san francisco"
}
}
я правильно получить документ в employeesCollection
.
Мой вопрос: когда в createEmployee
в прокомментированной строке, как я могу получить доступ к полям внедренного объекта (Company
)? Я также пробовал employee.get("company").get("name")
без эффекта.
Конечной целью является «принудительное» отношение «один ко многим», и я хотел бы иметь возможность хранить в документе компании также список сотрудников.
Это дает мне «java.lang.NullPointerException». – Marco