我在一对多的关系中遇到问题,要关联,我只想使用用户ID,我不想创建一个新的ID,我放了我的代码
output.delete(0.0, END) # Clear ouytout text area
output.insert('1.0', 'A message!') # Display in text area
“我的收藏夹”是
if
大惊小怪我明白了
@PostMapping("/createFavorite")
public ResponseEntity<Favorite> createFavorite(@RequestBody Favorite favorite) {
return new ResponseEntity<Favorite>(userServiceImpl.createFavorite(favorite), HttpStatus.OK);
}
我不想创建新用户, 用户已经创建,我只需要使用您的ID即可引用
答案 0 :(得分:4)
您需要创建一个新用户或检索任何现有用户并在“收藏夹”对象中进行设置。如果存在favorite.user.id,则不会创建新用户。
即使您应该将Cascade设置为CascadeType.DETACH,也可以避免从收藏夹对象创建或更新User对象。如果favourite.user.id为null,而不是创建一个新的用户对象,它将抛出错误。
@ManyToOne(cascade = CascadeType.DETACH)
@JoinColumn(name = "user_fk")
User user;
答案 1 :(得分:2)
您需要检索您的现有用户,并将其作为收藏夹(user)对象放置(分配)。这样,它将起作用。
我不太清楚你的招摇规格。您是否使用某种json模式?
答案 2 :(得分:1)
您的实体结构很好。您必须从.dismiss()
中检索用户并将其分配到UserRepository
实体中。恕我直言,请介绍FavoriteDTO类。因此实体模型不会被公开。
Favorite
您的服务实现应检查用户的可用性,然后将其分配给public class FavoriteDTO implements Serializable {
private long id;
private String element;
long userId;
//getters and setters
}
实体。
Favorite
您的更新的swagger请求json如下
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);
}
}