hibernate - Spring Data JPA:一对多映射:SQLIntegrityConstraintViolationException
问题描述
我有两个实体类客户和产品,一个客户可以购买多个产品(一对多映射)
@Entity
public class Customer {
@Id
@GeneratedValue
private int id;
private String name;
private String email;
private String gender;
@OneToMany(targetEntity = Product.class,cascade = CascadeType.ALL)
@JoinColumn(name ="cp_fk",referencedColumnName = "id")
private List<Product> products;
}
@Entity
public class Product {
@Id
private int pid;
private String productName;
private int qty;
private int price;
}
当一个客户拥有多个产品时,它工作正常。
当一个客户购买的现有产品也被另一个客户购买时,问题就出现了。
请求有效负载 1:(它可以正常工作,创建一个用户 basant 和两个产品)
{
"customer": {
"name": "Basant",
"email": "b@gmail.com",
"gender": "male",
"products": [
{
"pid": 201,
"productName": "Mobile",
"price": 10000,
"qty": 1
},
{
"pid": 399,
"productName": "Laptop",
"price": 200000,
"qty": 3
}
]
}
}
请求有效负载 2:(此请求将给出 java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '201' for key 'product.PRIMARY')
{
"customer": {
"name": "Santosh",
"email": "s@gmail.com",
"gender": "male",
"products": [
{
"pid": 201,
"productName": "Mobile",
"price": 10000,
"qty": 1
},
{
"pid": 286,
"productName": "clothes",
"price": 40000,
"qty": 2
}
]
}
}
我们如何确保 Santosh 也能够购买 Basant 购买的同一部手机?你能帮我解决这个问题吗
解决方案
推荐阅读
- powershell - Office365 EWS 错误:EWS 不可用,因为目标站点中的任何客户端访问服务器都无法处理该请求
- html - 快速提问:部分幻灯片的实现?
- javascript - 在对另一个模型进行搜索后,MongoDB 查询添加字段
- python - 如何从另一个文件中重新启动 Python 服务?
- spring-webflux - 这个 Spring WebFlux 控制器有问题吗?它给了我一个 415 Unsupported Media Type 的响应
- python - 如何将 Python 代码与 HTML 网页链接?
- mysql - 在 mysql 中对 2 个查询的输出执行计算
- python - 网页抓取和传输数据excel python
- bash - Bash 删除参数 $@ 的字符串列表中的重复项
- nlp - 将 AllenNLP 解释与 HuggingFace 模型一起使用