Мой тест интеграции spring -data-rest не выполняется для простого запроса json. Рассмотрим ниже модели jpa
Order.java
public class Order {
@Id @GeneratedValue//
private Long id;
@ManyToOne(fetch = FetchType.LAZY)//
private Person creator;
private String type;
public Order(Person creator) {
this.creator = creator;
}
// getters and setters
}
Person.java
ic class Person {
@Id @GeneratedValue private Long id;
@Description("A person first name") //
private String firstName;
@Description("A person last name") //
private String lastName;
@Description("A person siblings") //
@ManyToMany //
private List<Person> siblings = new ArrayList<Person>();
@ManyToOne //
private Person father;
@Description("Timestamp this person object was created") //
private Date created;
@JsonIgnore //
private int age;
private int height, weight;
private Gender gender;
// ... getters and setters
}
В моем тесте я создал человека, используя personRepository и inited order, передавая человеку
Person creator = new Person();
creator.setFirstName("Joe");
creator.setLastName("Keith");
created.setCreated(new Date());
created.setAge("30");
creator = personRepository.save(creator);
Order order = new Order(creator);
String orderJson = new ObjectMapper().writeValueAsString(order);
mockMvc.perform(post("/orders").content(orderJson).andDoPrint());
Создан заказ, но создатель не связан с порядком. Также я хочу передать тело запроса как объект json. В этом мой json-объект должен содержать создателя следующим образом
{
"type": "1",
"creator": {
"id": 1,
"firstName": "Joe",
"lastName": "Keith",
"age": 30
}
}
Если я отправляю тело запроса со следующим json, вызов работает отлично
{
"type": "1",
"creator": "http://localhost/people/1"
}
Но я не хочу посылать второго json. Любая идея, как решить проблему. Потому что уже мой клиент потребляет ответ сервера, отправив первый json. Теперь я перенес свой сервер для использования spring -data-rest. После этого весь мой клиентский код не работает.
Как это решить?