我有2个关于@ManyToMany关系的课程
第一堂课:剪辑 第二课:地点
主要思想是剪辑可以在多个位置使用
这是剪辑类。
@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;
}
}
这是位置类
@Entity
@Table(name = "LOCATION")
public class Location {
}
这不是双向关系
我的问题: 当我从用户界面中删除位置时,我希望自动删除连接表中的相关行
我能这样做吗?
我应该使用什么注释?
请注意,Location类和Clip类也用于其他关系
由于 Maayan 我使用了错误的关系吗?
答案 0 :(得分:1)
这是不可能的。在删除位置之前,您必须从位置列表中删除该位置。由于您的关联是单向的,因此您必须执行查询以查找该位置上的所有可用剪辑,并从每个剪辑中删除该位置。
另一种选择是执行本机SQL查询以从连接表中删除行,但请记住,会话中加载的实体不会知道更改。