我有这两个类:
public class ClassA extends [...] implements [...] {
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = JOIN_TABLE_NAME,
joinColumns = @JoinColumn(name = COLUMN_REF_A, referencedColumnName = COLUMN_ID_A),
inverseJoinColumns = @JoinColumn(name = COLUMN_REF_B, referencedColumnName = COLUMN_ID_B))
private List<ClassB> fieldClassB;
}
public class ClassB extends [...] implements [...] {
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "fieldClassB", cascade = CascadeType.ALL)
private List<ClassA> fieldClassA;
}
当我通过Spring Data JPA存储库删除ClassB时,Hibernate也会删除ClassA的实例,但我只想删除JOIN_TABLE_NAME表中的行(另一个问题是,由于级联模式,删除ClassA实体还会删除被这些ClassA引用的其他ClassB)。是否有方法可以处理此问题,而无需创建联接实体并将@ManyToMany注释替换为引用新联接实体的@OneToMany注释?
@PreRemove
的方法(在ClassB
中),以自动处理该操作。 - Thoomas@PreRemove
注解实现这个 remove 函数的?我尝试时却得到了一个编译错误:Callback methods annotated on the bean class must return void and take no arguments: javax.persistence.PreRemove
。 - Mahan_FClassB
有一个带有以下签名的方法:@PreRemove public void preRemove() { ... }
- Thoomas