나는 프론트 엔드에서 왔기 때문에이 모든 것이 나에게 새로운 것입니다. 다음 엔터티가 Client
있으며 Cart
, Product
이러한 엔터티는 다음과 같이 연결되어 있습니다.
Client
<=>@OneToOne
<=>Cart
Cart
=>@OneToMany
=>Product
(@ManyToOne
대Cart
)
my SpringDataJpaApplication
를 실행 하면 Postgres의 모든 열과 외래 키가있는 3 개의 테이블이 모두 올바르게 생성됩니다. 새로운 만들기 Cart
모든 필드와 함께, 모두 만들어집니다 Client
및 Cart
Postgres의의를하지만, 작성하지 않습니다 Product
이다 @ManyToOne
. 데이터베이스를 쿼리하면 다음에 대한 빈 필드가 생성됩니다.Product
// Client
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
public class Client {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int client_id;
private String name;
private String lastName;
@OneToOne(mappedBy = "client")
private Cart cart;
}
// Cart
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
public class Cart {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int cart_id;
@OneToMany(mappedBy = "cart")
private List<Product> productList;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "fk_client_id", referencedColumnName = "client_id")
private Client client;
}
//Product
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int product_id;
private String productName;
private int price;
private int qty;
@ManyToOne
@JoinColumn(name = "fk_cart_id")
private Cart cart;
}
// CartController
@RestController
public class CartController {
@Autowired
CartRepository cartRepository;
@PostMapping("/createCart")
public Cart createCart(@RequestBody Cart request) {
return cartRepository.save(request);
}
}
언급했듯이 엔드 포인트에 게시하면 및에 200
대해서만 생성 된 with 레코드 (위에서 언급 한대로)가 반환 됩니다 . 게시 요청은 다음과 같습니다.Client
Cart
{
"productList": [
{
"productName": "mobile",
"price": 800,
"qty": 2
}
],
"client": {
"name": "John",
"lastName": "Done"
}
}
내가 무엇을 잘못하고 있지? Product
테이블이 채워 지지 않는 이유는 무엇 입니까? ( 참고 : 단지와 @OneToMany
와 @ManyToOne
와 Cart
와 Product
나는 둘 다 채울 수 있어요,하지만이 때 Client
믹스에 던져되고, 내가 문제가 위의 describbed이)