3 回答

TA貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊
您的實體結(jié)構(gòu)很好。您必須從實體中檢索用戶UserRepository并將其分配給實體Favorite。恕我直言,請介紹一下 FavoriteDTO 類。所以實體模型不會暴露。
FavoriteDTO.java
public class FavoriteDTO implements Serializable {
private long id;
private String element;
long userId;
//getters and setters
}
您的服務(wù)實施應(yīng)檢查用戶可用性,然后將其分配給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貢獻(xiàn)1775條經(jīng)驗 獲得超8個贊
您需要檢索現(xiàn)有用戶并將其作為 favorite.user 對象放在那里(分配)。這樣,它將起作用。
我不太清楚你的招搖規(guī)范。你在使用某種 json 模式嗎?

TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊
您需要創(chuàng)建一個新用戶或檢索任何現(xiàn)有用戶并設(shè)置收藏夾對象。如果存在 favorite.user.id,則不會創(chuàng)建新用戶。
甚至您應(yīng)該將 Cascade 設(shè)置為 CascadeType.DETACH 以避免從收藏對象創(chuàng)建或更新用戶對象。如果 favorite.user.id 為 null 而不是創(chuàng)建新的用戶對象,它將拋出錯誤。
@ManyToOne(cascade = CascadeType.DETACH)
@JoinColumn(name = "user_fk")
User user;
添加回答
舉報