3 回答
TA贡献1828条经验 获得超4个赞
您的实体结构很好。您必须从实体中检索用户UserRepository并将其分配给实体Favorite。恕我直言,请介绍一下 FavoriteDTO 类。所以实体模型不会暴露。
FavoriteDTO.java
public class FavoriteDTO implements Serializable {
private long id;
private String element;
long userId;
//getters and setters
}
您的服务实施应检查用户可用性,然后将其分配给Favorite实体。
ServiceImpl.java
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
}
TA贡献1775条经验 获得超8个赞
您需要检索现有用户并将其作为 favorite.user 对象放在那里(分配)。这样,它将起作用。
我不太清楚你的招摇规范。你在使用某种 json 模式吗?
TA贡献1802条经验 获得超5个赞
您需要创建一个新用户或检索任何现有用户并设置收藏夹对象。如果存在 favorite.user.id,则不会创建新用户。
甚至您应该将 Cascade 设置为 CascadeType.DETACH 以避免从收藏对象创建或更新用户对象。如果 favorite.user.id 为 null 而不是创建新的用户对象,它将抛出错误。
@ManyToOne(cascade = CascadeType.DETACH)
@JoinColumn(name = "user_fk")
User user;
添加回答
举报