[英]one to many relation ship in java spring boot
我有 2 個表用戶和機構,主鍵分別是 user_Id 和機構 ID。 盡管一個機構可以有多個用戶,但每個用戶只能在一個機構工作。 所以它是一對多的關系。 但是在我的 mySQL 數據庫中,機構表有固定數量的用戶可以工作的機構。在我的用戶表中有一個機構_Id 的外鍵,指定他為哪個機構工作。 在使用 rest api 添加用戶時,我無法指定他為哪個機構工作
------用戶模型-----
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="user_Id")
private int userId;
@Column(name="name")
private String name;
@Column(name="lastname")
private String lastname;
@Column(name="email")
private String email;
@Column(name="password")
private String password;
@Column(name="isActive")
private boolean isActive;
@Column(name="lastActive")
private String lastActive;
@Column(name="createdDate")
private String createdDate;
@Column(name="isBlocked")
private boolean isBlocked;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "institution_id", nullable = false)
private Institution institution;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
@JoinTable(name = "user_has_role",
joinColumns = {
@JoinColumn(name = "user_id", referencedColumnName = "user_id",
nullable = false, updatable = true)},
inverseJoinColumns = {
@JoinColumn(name = "role_id", referencedColumnName = "role_id",
nullable = false, updatable = true)})
private Set<Role> roles = new HashSet<>();
}
--------機構模式--------
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Entity
@Table(name = "institution")
public class Institution {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="institution_Id")
private int institutionId;
@Column(name="name")
private String name;
@Column(name="type")
private String type;
@Column(name="location")
private String location;
@OneToMany(mappedBy = "institution", fetch = FetchType.LAZY)
private Set<User> user;
}
------控制器-----這里我使用api添加用戶...
@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();
}
有辦法嗎?
--------api 請求---------
{
"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"
}
}
...
感謝您添加詳細信息。 您可以通過傳遞institution
表的主鍵來實現相同的目的,即相應記錄的institution_Id
ID。
例如 - 如果您希望用戶Jawad
鏈接到機構maliks
,那么您的institution
表應該已經插入了一行,其值分別為maliks, Merchant, Le mall sen el fil
用於name
、 type
和location
列。 (我假設這個記錄在您的數據庫中有institution_Id
_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
}
}
您需要確保的另一件事是您的User
model 具有如下級聯設置
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "institution_id", nullable = false)
private Institution institution;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.