休止状態でハッシュ マップからアイテムを削除しようとしています。
コレクションの設定は次のとおりです。
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@Where(clause = "charactType='charact'")
@MapKey(name = "shortcut")
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
public Map<String, Characteristic> getCharacteristics()
{
return characteristics;
}
public void setCharacteristics(Map<String, Characteristic> characteristics)
{
this.characteristics = characteristics;
}
そして、これが同じオブジェクトに対する私の削除機能です:
@Transactional
public void removeCharacteristic(Characteristic charact)
{
// getCharacteristics().size();
getCharacteristics().remove(charact.getShortcut());
}
removeCharacteristic を使用しても、データベース内のアイテムは削除されません。リストのサイズを取得するために行のコメントを外すと (コレクションのロードが強制されます)、レコードは適切に削除されます。
何が問題ですか ?コレクション全体の負荷を強制せずにどうすれば達成できますか?
編集: マップをリストに置き換え、それは魅力のように実行されます (以前に size() 関数によってロードせずに)...これは非常に奇妙です...だから私の問題はリストで解決されますが、私は 'なぜ実行されないのか知りたいですか?