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:如何从联结表中删除条目?的主要内容,如果未能解决你的问题,请参考以下文章

sqlalchemy:从联结表中删除项目

Hibernate Envers:如何从我的审计表中删除条目?

spring thymeleaf - 从 html 表中删除对象并将 id 传递给控制器

从哈希表中删除条目的最佳方法

使用指针从单链表中删除项目

在运行规范条目时从模式迁移表中删除