我嘗試從hibernate映射中刪除一個項目。如何從Hibernate中的Hashmap中刪除項目?
這是我在收集配置:
@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數據庫中不刪除該項目。 如果我取消註釋該行以獲取列表的大小(強制加載該集合),該記錄被完全刪除。
什麼問題?我如何在不強迫整個集合的負載的情況下實現它?
編輯: 我用一個列表替換地圖,它像一個魅力運行(沒有加載它以前的大小()函數)...這很奇怪...所以我的問題解決了與列表,但我很想知道爲什麼它不運行?
您的交易是否正確提交(和會話刷新)? –
我想是的,因爲如果它沒有被刷新,未註釋的行就什麼都不會做。 –
您可以爲事務管理器啓用日誌記錄並進行休眠以查看配置是否正確? –