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;
添加回答
舉報