У меня есть БД со схемой, как показано ниже:
Я бы хотел создать Заказ. Я создал DAO Порядка со всеми столбцами, как показано ниже, и добавил туда такие отношения:
Заказать
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name ="OrderID", nullable = false,unique = true)
private Integer orderID;
// here attributes from Columns I am skipping it
@ManyToOne
@JoinColumn(name = "customerID", insertable = false, updatable = false)
@JsonIgnore
private Customer customer;
public Customer getCustomer() {
return this.customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private Set<OrderDetails> orderDetails;
public Set<OrderDetails> getOrderDetails() {
return orderDetails;
}
public void setOrderDetails(Set<OrderDetails> orderDetails) {
this.orderDetails = orderDetails;
}
Мне интересно, как я могу создать POST с деталями заказа. Я попробовал это так:
Служба заказа
public void createOrUpdateOrder(Order order){
Set<OrderDetails> orderDetailsSet = new HashSet<>();
for( OrderDetails orderDetails : order.getOrderDetails() ) {
orderDetails.setOrder( order );
orderDetails.setOrderID(order.getOrderID()); // HERE IS NULL, orderID is not set yet, maybe thats the reason
}
order.setOrderDetails( orderDetailsSet );
orderRepository.save(order);
}
но таким образом, когда я ПОЛУЧАЮ все ордера с OrderDetails, я вижу, что для каждого ордера значение orderDetails пусто.
Вот мой пример полезной нагрузки POST:
{
"customerID":"ANATR",
"employeeID": 3,
"orderDate": "1996-07-10",
"requiredDate": "1996-07-24",
"shippedDate": "1996-07-16",
"shipVia": 2,
"freight": 58.17,
"shipName": "Hanari Carnes",
"shipAddress": "Rua do Paço, 67",
"shipCity": "Rio de Janeiro",
"shipRegion": "RJ",
"shipPostalCode": "05454-876",
"shipCountry": "Brazil",
"orderDetails":[
{
"unitPrice": 9,
"quantity": 10,
"discount": 0,
"productID":12
}
]
}
и мой ответ на заказ GET:
"orderID": 1000019,
"customerID": "ANATR",
"employeeID": 3,
"orderDate": "1996-07-10",
"requiredDate": "1996-07-24",
"shippedDate": "1996-07-16",
"shipVia": 2,
"freight": 58.17,
"shipName": "Hanari Carnes",
"shipAddress": "Rua do Paço, 67",
"shipCity": "Rio de Janeiro",
"shipRegion": "RJ",
"shipPostalCode": "05454-876",
"shipCountry": "Brazil",
"orderDetails": [] <----- should not be empty!
Не могли бы вы помочь мне с этим?