Я пытаюсь вложить две модели, поэтому мой ответ должен выглядеть следующим образом:
{
"name": "some_name",
"value": ["value1", "value2"],
"details": {
"name": "Test name",
"surname": "Test surname",
"phone": "Test phone",
"email": "Test email"
}
}
У меня работает CRUD MongoDB API, но что-то здесь не так.У меня есть ноль для «деталей» в контроллере.
Объект: com.user.model.User@7fe8380d [_id = ноль, name = some_name, value = [value1, value2], details = null]
Позвольте мне показать вам, что я сделал до сих пор:
КОНТРОЛЛЕР:
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import org.apache.commons.lang3.builder.ToStringBuilder;
@RestController
@RequestMapping("/someaction")
public class UserController {
private final UserService service;
public UserController(UserService service) {
this.service = service;
}
@RequestMapping(value = "", method = RequestMethod.POST)
public User createUser(@Valid @RequestBody User user) {
System.out.println("An object: " + ToStringBuilder.reflectionToString(user));
return service.createUser(user);
}
}
СЕРВИС:
import com.inpost.user_registration.repository.UserRegistrationRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.bson.types.ObjectId;
@Service
public class UserService {
@Autowired
private UserRepository repository;
public User createUser(User user) {
user.set_id(ObjectId.get());
repository.save(user);
return user;
}
}
Хранилище:
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface UserRepository extends MongoRepository<User, String> {
User findBy_id(ObjectId _id);
}
МОДЕЛЬ для «Подробности»:
public class Details {
private String name;
private String surname;
private String phone;
private String email;
public Details() {
}
public Details(String name, String surname, String phone, String email) {
this.name = name;
this.surname = surname;
this.phone = phone;
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Details [_id=" + name + ", env=" + surname + ", services=" + phone + ", email=" + email + "]";
}
}
МОДЕЛЬ для «Пользователь»:
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import java.util.ArrayList;
public class User {
@Id
public ObjectId _id;
public String name;
public ArrayList<String> value;
public Details details;
public User() {}
public User(ObjectId _id, String name, ArrayList<String> value, Details details) {
this._id = _id;
this.name = name;
this.value = value;
this.details = details;
}
public String get_id() {
return _id.toHexString();
}
public void set_id(ObjectId _id) {
this._id = _id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArrayList<String> getValue() {
return value;
}
public void setValue(ArrayList<String> value) {
this.value = value;
}
public Details getDetails() {
return details;
}
public void setDetails(Details details) {
this.details = details;
}
@Override
public String toString() {
return "User [_id=" + _id + ", name=" + name + ", value=" + value + ", details=" + details + "]";
}
}
Теперь все работает нормально, когда я пытаюсь сохранить значение «имя» и «значение»».Когда я пытаюсь опубликовать сообщение с подробностями, я получаю ноль
{
"_id": "5c4c5c3f7a56c12578122d73",
"name": "some_name",
"value": [
"value1",
"value2"
],
"details": null
}
Кто-нибудь может мне помочь с этим?Где-то пропускаю что-то важное.