spring-boot - 在春季启动中使用@Onetomany @JoinColumn 进行一对多关联?
问题描述
我是 Spring Boot 和 Web 开发的初学者,并尝试使用 Onetomany 和 joincolumn 注释进行一对多关联映射。
在我的应用程序中,有 2 个实体类有 User 和 ProductDetail,我正在尝试在它们之间进行一对多关联。我期望 user-id 作为 ProductDetail 表中的外键。
运行程序时没有错误,当我将 JSON 语句作为输入传递给邮递员中的应用程序时,但是当我看到我的 MySql 数据库以查看是否发生映射时,用户 ID 未映射为外键在 ProductDetail 表中。
我在下面发布实体类和其他类.....
请帮助我真的被卡住了请让我知道我出了什么问题(我知道我错过了我自己无法弄清楚的非常小的东西)
用户等级:-
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
public class User {
@Id
@GeneratedValue
int id;
String name;
String gender;
String emailId;
@OneToMany(targetEntity = ProductDetail.class,cascade = CascadeType.ALL)
@JoinColumn(name="up_fk",referencedColumnName = "id")
private List<ProductDetail> userpurchase;
}
ProductDetail类:-
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
public class ProductDetail
{
@Id
private int productid;
private String productname;
private int cost;
}
控制器类:-
@RestController
@RequestMapping("/Ecommerce")
public class UserController
{
@Autowired
private ProductService productservice;
@Autowired
private ProductRepository productRepository;
@Autowired
private UserRepository userRepository;
@GetMapping("/products")
public List<ProductDetail> ShowProducts()
{
return productservice.getProducts();
}
@PostMapping("/PlaceOrder")
public User placeOrder(@RequestBody OrderRequest request)
{
return userRepository.save(request.getUser());
}
}
OrderRequest:- 仅包含我们从中提取用户对象的用户对象的类,它将包含产品列表..
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class OrderRequest
{
private User user;
}
application.properties 文件:-
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ecommerceapi
spring.datasource.username=root
spring.datasource.password=deep
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto =update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
解决方案
正确的名字是userpurchase
,不是ProductDetail
。
{
"user": {
"name": "deep",
"gender": "male",
"emailId": "d@gmail.com",
"userpurchase": [
{
"productid": 2,
"productname": "laptop",
"cost": 50000
},
{
"productid": 3,
"productname": "earphone",
"cost": 500
}
]
}
}
推荐阅读
- c# - 无法使用 chrome 驱动程序 85 和 chrome 浏览器版本 85 初始化 chrome 驱动程序
- amazon-web-services - AWS CodeCommit 与 git-remote-codecommit
- facebook - Flutter facebook登录密钥哈希与任何存储的密钥哈希不匹配
- algorithm - 有没有办法得到一个点的坐标?
- oracle - Oracle 触发器性能很慢
- node.js - Jenkins 构建并入 NVM 突然失败(无法分叉 bash)
- javascript - javascript eventlistener 不适用于 ajax 加载的内容
- r - 创建一个函数来总结当前存储在数据框的 2 列中的成对“因素”
- c++ - 什么是初始化的子表达式
- java - 如何将 postgresql jdbc 驱动程序添加到 intellij?