gpt4 book ai didi

java - spring-data-rest 集成测试因简单的 json 请求而失败

转载 作者:行者123 更新时间:2023-12-02 14:44:44 24 4
gpt4 key购买 nike

对于一个简单的 json 请求,我的 spring-data-rest 集成测试失败。考虑以下 jpa 模型

订单.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's first name") //
private String firstName;

@Description("A person's last name") //
private String lastName;

@Description("A person's 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 创建了一个人,并通过传递 person 来初始化订单

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。之后我的所有客户端代码都无法工作。

如何解决这个问题?

最佳答案

您正确地将订单与创建者关联起来,但是该人未与订单关联。您缺少List<Order> orders Person 类中的字段。添加这个,添加注释,添加向 person 添加订单的方法,然后在发送 JSON 之前,您应该调用如下内容:

creator.addOrder(order);
order.setCreator(cretr);

关于java - spring-data-rest 集成测试因简单的 json 请求而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41480088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com