[英]Problems with the relationship of one to many
我在一對多關系中存在問題,要關聯我只想使用用戶ID我不想創建新的ID,所以我將代碼
@PostMapping("/createFavorite")
public ResponseEntity<Favorite> createFavorite(@RequestBody Favorite favorite) {
return new ResponseEntity<Favorite>(userServiceImpl.createFavorite(favorite), HttpStatus.OK);
}
我的實體收藏是
public class Favorite implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "element")
private String element;
@ManyToOne
@JoinColumn(name = "user_fk")
User user;
大搖大擺我明白了
{
"element": "string",
"user": {
"email": "string",
"id": 0,
"life": "suspend",
"name": "string",
"password": "string"
}
}
我不想創建新用戶,該用戶已經創建,我只需要使用您的ID即可引用它
您需要創建一個新用戶或檢索任何現有用戶並在“收藏夾”對象中進行設置。 如果存在favorite.user.id,則不會創建新用戶。
甚至您也應該將Cascade設置為CascadeType.DETACH,以避免從喜歡的對象創建或更新User對象。 如果favourite.user.id為null,而不是創建一個新的用戶對象,它將拋出錯誤。
@ManyToOne(cascade = CascadeType.DETACH)
@JoinColumn(name = "user_fk")
User user;
您需要檢索現有用戶並將其作為收藏夾.user對象放置(分配給它)。 這樣,它將起作用。
您的招搖規格我不太清楚。 您是否使用某種json模式?
您的實體結構很好。 您必須從UserRepository
檢索用戶並將其分配到“ Favorite
實體中。 恕我直言,請介紹FavoriteDTO類。 因此實體模型不會被公開。
public class FavoriteDTO implements Serializable {
private long id;
private String element;
long userId;
//getters and setters
}
您的服務實施應檢查用戶的可用性,然后將其分配給“ Favorite
實體。
public void createFavorite(FavoriteDTO favoriteDTO) {
Optional<User> optional = userRepository.findById(favoriteDTO.getUserId());
if(optional.isPresent()) {
Favorite favorite = new Favorite();
favorite.setUser(optional.get());
favoriteRepository.save(favorite);
}
}
您更新的swagger請求json如下所示
{
"element": "string",
"userId": long
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.