我有一个名为User with this property
的域对象 @ManyToMany
@JoinTable(
name="t_user_fav_hotel",
joinColumns=@JoinColumn(name="user_id", referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="hotel_id", referencedColumnName="id"))
private Set<hotel> favoriteHotels = new HashSet<>();
我已在服务级别创建了一个方法来获取所有收藏夹,并避免错误无法初始化代理,并且工作正常。
userService.getFavorites (loggedInUser());
但我不知道如何添加新酒店以避免此错误:
Hibernate.initialize(loggedInUser().getFavoriteHotels());
loggedInUser().getFavoriteHotels().add(hotel);
我还在用户服务级别添加了相同的结果
@Transactional
public void addFavorite (User user, Hotel hotel) {
Hibernate.initialize(user.getFavoriteHotels());
if (!user.getFavoriteHotels().contains(hotel)) {
user.getFavoriteHotels().add(hotel);
userRepository.save(user);
}
}
答案 0 :(得分:0)
但我不知道如何添加新酒店以避免此错误
当您尝试添加新酒店时,您也尝试向数据库创建新事务,因此您需要打开一个会话以便进行交易。
我看到您正在使用Spring,因此您可以在此处添加@transactional
annotation到您尝试添加新收藏的酒店的方法。
@Transactional
public void addNewHotel(Hotel hotel){
Hibernate.initialize(loggedInUser().getFavoriteHotels());
loggedInUser().getFavoriteHotels().add(hotel);
}