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) は変更されません。
助けてくれてありがとう。