0

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) は変更されません。

助けてくれてありがとう。

4

2 に答える 2

0

データベースで変更を有効にするには、フラッシュを呼び出す必要があります。フラッシュを呼び出さず、リフレッシュを呼び出すため、db コピーが変更を上書きします

于 2012-08-02T17:24:31.857 に答える