o 一些惯用的说明以便更好地理解:capa表示层,mapa表示地图
o 一个图层可能用于不同的地图,一个地图可能包含许多不同的图层
o 删除图层时,与地图的关联必须消失,但地图本身仍然存在。
o 相反,当您删除地图时,与图层的关联必须消失,但图层本身仍然存在。
o 映射代码:
@Entity
@Table(name = "CAPA")
public class Capa implements Serializable {
@ManyToMany(fetch=FetchType.LAZY, mappedBy="capas")
private Set<Mapa> mapas;
}
和
@Entity
@Table(name = "MAPA")
public class Mapa implements Serializable {
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="mapa_capa", joinColumns={@JoinColumn(name="idMapa")}, inverseJoinColumns={@JoinColumn(name="idCapa")})
private Set<Capa> capas;
}
o 要删除图层(capa)与其地图(mapas)之间的链接,我尝试过:
Capa c = findCapa();
Iterator<Mapa> itms = c.getMapas().iterator();
while (itms.hasNext()) {
Mapa m = itms.next();
m.getCapas().remove(c);
c.getMapas().remove(m);
getEntityManager().refresh(m);
getEntityManager().refresh(c);
}
那是行不通的。两个集合(m.capas 和 c.mapas)保持不变。
感谢您的帮助。