【发布时间】:2018-12-16 13:21:18
【问题描述】:
我在进入 Spring Data 时遇到了麻烦
我得到了实体Product,它有Category(我猜关系类型是对的?产品有一个类别,类别有很多产品)
@Entity
public class Product implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "category_id")
private Category category;
}
@Entity
class Category implements Serializable {
public Category() {
}
public Category(String name){
this.name = name;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "category_id")
private Long id;
@Column(unique = true)
private String name;
@OneToMany(mappedBy = "category", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<Product> products;
}
现在我尝试通过 Postman 添加新的 Product,调用我的 RestController
@PostMapping("/add")
public Product addProduct(@Valid @RequestBody Product product){
return repository.save(product);
}
有 2 个以下请求
{
"name" : "pork",
"category" : "meat"
}
{
"name" : "chicken",
"category" : "meat"
}
在结果中我得到了 2 个以下回复
{
"id": 1,
"name": "pork",
"category": {
"id": 1,
"name": "meat",
"products": null
}
}
{
"id": 2,
"name": "chicken",
"category": {
"id": 2,
"name": "meat",
"products": null
}
}
在数据库中,我实际上得到了 2 个名为“肉类”的类别(即使它应该是独一无二的。此外,我的 Category 课程中真的需要 Set<Product> 吗?TBH,Category 对此没有兴趣完全没有。
【问题讨论】:
标签: mysql database spring-data