Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除实体时从hibernate中的联接表中删除项_Hibernate_Annotations_Many To Many_Jointable - Fatal编程技术网

删除实体时从hibernate中的联接表中删除项

删除实体时从hibernate中的联接表中删除项,hibernate,annotations,many-to-many,jointable,Hibernate,Annotations,Many To Many,Jointable,我有两个与@ManyToMany关系的类 第一类:剪辑 第二类:位置 其主要思想是一个剪辑可以在多个位置使用 这是clip类 @Entity @Table(name = "CLIP") public class Clip { private Long id; private List<Location> locations; @Id @GeneratedValue(strategy=GenerationType.AUTO) public Long

我有两个与@ManyToMany关系的类

第一类:剪辑 第二类:位置

其主要思想是一个剪辑可以在多个位置使用

这是clip类

@Entity
@Table(name = "CLIP")
public class Clip {

    private Long id;
    private List<Location> locations;

    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    @ManyToMany( )
           @JoinTable(name="CLIP_LOCATION",joinColumns=@JoinColumn(name="CLIP_ID",nullable=false),inverseJoinColumns=@JoinColumn(name="LOCATION_ID",nullable=false) )
    @ForeignKey(name="FK_CLIP_LOCATION",inverseName="FK_LOCATION_CLIP")
    public List<Location> getLocations() {
        return locations;
    }
    public void setLocations(List<Location> locations) {
        this.locations = locations;
}
}
这不是一种双向关系

我的问题: 从用户界面中删除位置时,我希望自动删除联接表中的相关行

我可以这样做吗

我应该使用什么注释

请注意,Location类和Clip类也用于其他关系中

谢谢 马扬
我是否使用了错误的关系?

这是不可能的。在删除位置之前,必须从位置列表中删除该位置。由于关联是单向的,因此必须执行查询以查找该位置上的所有可用剪辑,并从每个剪辑中删除该位置

另一个选项是执行本机SQL查询以从联接表中删除行,但请记住,会话中加载的实体不会意识到更改

@Entity
@Table(name = "LOCATION")
public class Location {
}