Spring:如何从联结表中删除条目?
Posted
技术标签:
【中文标题】Spring:如何从联结表中删除条目?【英文标题】:Spring : How to delete entry from junction table? 【发布时间】:2017-05-29 06:23:22 【问题描述】:我有一个 user_id 和 favorite_property_id 的联结表现在我想删除用户最喜欢的属性,我在存储库中尝试了以下方法但它不起作用,有没有人知道如何删除他的条目接线表?
User.java
@Entity
public class User implements Serializable, UserGetters
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany(fetch = FetchType.EAGER)
private Set<Property> favouriteProperty;
public Set<Property> getFavouriteProperty()
return favouriteProperty;
public void setFavouriteProperty(Set<Property> favouriteProperty)
this.favouriteProperty = favouriteProperty;
用户存储库
public interface UserRepository extends JpaRepository<User, Long>
//@Transactional
// Long deleteByFavouritePropertyId(@Param("favoriteProperty") Long favoriteProperty);
// @Query("delete favouriteProperty from user u where u.favouriteProperty.id=:favouriteProperty")
// void unmarkFavouriteProperty(@Param("favouriteProperty") Long favouriteProperty);
【问题讨论】:
意外令牌:从第 1 行附近的第 26 列 [从用户 u 中删除 favouriteProperty 其中 u.favouriteProperty.id=:favouriteProperty] @Afridi 【参考方案1】:你可以这样做:
1。加载用户对象
User user = userRepository.findOne(userId);
2。从列表中删除所需的对象
user.getFavouriteProperty().remove(id);
3。保存用户对象
userRepository.save(user);
【讨论】:
【参考方案2】:尝试使用:
Query query = session.createQuery("delete Category where id = :favorite_property_id ");
query.setParameter("favorite_property_id ", new Long(favoriteProperty));
int result = query.executeUpdate();
在您的存储库文件中。它会正常工作的。
【讨论】:
什么是会话? 它是从会话工厂获取的休眠会话。Session sess = factory.openSession();
感谢您的帮助【参考方案3】:
这太简单了:P
我可以使用以下 API 删除
API:http://localhost:8555/api/users/2/favouriteProperty/3
方法:删除
【讨论】:
以上是关于Spring:如何从联结表中删除条目?的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate Envers:如何从我的审计表中删除条目?