3 回答
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
您的實(shí)體結(jié)構(gòu)很好。您必須從實(shí)體中檢索用戶UserRepository并將其分配給實(shí)體Favorite。恕我直言,請(qǐng)介紹一下 FavoriteDTO 類。所以實(shí)體模型不會(huì)暴露。
FavoriteDTO.java
public class FavoriteDTO implements Serializable {
private long id;
private String element;
long userId;
//getters and setters
}
您的服務(wù)實(shí)施應(yīng)檢查用戶可用性,然后將其分配給Favorite實(shí)體。
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 請(qǐng)求 json 如下所示
{
"element": "string",
"userId": long
}
TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
您需要檢索現(xiàn)有用戶并將其作為 favorite.user 對(duì)象放在那里(分配)。這樣,它將起作用。
我不太清楚你的招搖規(guī)范。你在使用某種 json 模式嗎?
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
您需要?jiǎng)?chuàng)建一個(gè)新用戶或檢索任何現(xiàn)有用戶并設(shè)置收藏夾對(duì)象。如果存在 favorite.user.id,則不會(huì)創(chuàng)建新用戶。
甚至您應(yīng)該將 Cascade 設(shè)置為 CascadeType.DETACH 以避免從收藏對(duì)象創(chuàng)建或更新用戶對(duì)象。如果 favorite.user.id 為 null 而不是創(chuàng)建新的用戶對(duì)象,它將拋出錯(cuò)誤。
@ManyToOne(cascade = CascadeType.DETACH)
@JoinColumn(name = "user_fk")
User user;
添加回答
舉報(bào)
