java spring boot中的一对多关系
我有两个表Users和Institution,主键分别是user\u Id和Institution\u Id。 每个用户在一个且仅在一个机构工作,尽管一个机构可以有多个用户。 因此,这是一种一对多的关系。 但是在我的mySQL数据库中,institution表有固定数量的机构,用户可以在其中工作。 在我的用户表中有一个institution_Id外键,用于指定他为哪个机构工作。 在使用RESTAPI添加用户时,我无法指定他为哪个机构工作 -----用户模型----- …感谢您添加详细信息。 您可以通过为相应记录传递java spring boot中的一对多关系,java,mysql,spring-boot,hibernate,one-to-many,Java,Mysql,Spring Boot,Hibernate,One To Many,我有两个表Users和Institution,主键分别是user\u Id和Institution\u Id。 每个用户在一个且仅在一个机构工作,尽管一个机构可以有多个用户。 因此,这是一种一对多的关系。 但是在我的mySQL数据库中,institution表有固定数量的机构,用户可以在其中工作。 在我的用户表中有一个institution_Id外键,用于指定他为哪个机构工作。 在使用RESTAPI添加用户时,我无法指定他为哪个机构工作 -----用户模型----- …感谢您添加详细信息。 您可
机构
表的主键(即机构Id
)来实现同样的目的
例如,如果您希望用户Jawad
链接到机构maliks
,那么您的机构
表中应该已经插入了一行,分别为名称
、类型
和位置
列插入值为mallks,Merchant,Le mall sen el fil
。(我假设此记录在您的数据库中有机构Id
=1)
然后您需要将下面的JSON作为请求传递
{
"name" : "Jawad",
"lastname" : "Zakhour",
"email" : "jawadzakhour@hotmail.com",
"password" : "jawad123",
"isActive" : 0,
"lastActive" : "13/08/2020",
"createdDate" : "07/07/2020",
"isBlocked" : 0,
"institution" :
{
"institutionId" : 1 // As per my assumption stated above
}
}
您需要确保的另一件事是您的用户
模型具有如下级联设置
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "institution_id", nullable = false)
private Institution institution;
到目前为止你试过什么?保存用户时,您是否尝试传递该用户工作的机构的
institutionId
考虑到机构是数据库中已经存在的主数据。我使用postman,所以是的,我尝试在我的json正文中添加所有内容—所有用户字段加上机构字段,你能给我举个例子吗@Sudoss@jayee当然可以。你能用你通过邮递员发送的JSON正文更新你的问题吗?另外,请确保在数据库中为institution table插入了一些行。是的,我会更新我的问题,是的,我的数据库@sudosstanks中的institutions中有记录用于添加详细信息,请检查我的解决方案,如果您遇到任何问题,请通知我们……我可以再问您一个问题吗?它是关于向用户添加角色的。。。这是一个多对多的关系,我应该问一个新问题还是更新这个问题?谢谢你问一个新问题总是更好的,如果你更新这个问题,答案可能会断章取义,对社区没有任何帮助。我问了一个新问题@Sudoss
@GetMapping("/getAllUsers")
public List<User> getAllUsers() {
return (List<User>) userrepository.findAll();
}
@PostMapping("/addUser")
public String addUser(@RequestBody User user) {
userrepository.save(user);
return "user saved with name: " + user.getName();
}
{
"name" : "Jawad",
"lastname" : "Zakhour",
"email" : "jawadzakhour@hotmail.com",
"password" : "jawad123",
"isActive" : 0,
"lastActive" : "13/08/2020",
"createdDate" : "07/07/2020",
"isBlocked" : 0,
"institution" :
{
"name" : "maliks",
"type" : "Merchant",
"location" : "Le mall sen el fil"
}
}
{
"name" : "Jawad",
"lastname" : "Zakhour",
"email" : "jawadzakhour@hotmail.com",
"password" : "jawad123",
"isActive" : 0,
"lastActive" : "13/08/2020",
"createdDate" : "07/07/2020",
"isBlocked" : 0,
"institution" :
{
"institutionId" : 1 // As per my assumption stated above
}
}
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "institution_id", nullable = false)
private Institution institution;