Я пытаюсь удалить элемент из хеш-карты с помощью спящего режима.
Вот мой конфиг на коллекцию:
@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 не удаляйте элемент в базе данных.
Если я раскомментирую строку, чтобы получить размер списка (который вызывает загрузку коллекции), запись удаляется.
В чем проблема? как я могу достичь этого, не форсируя загрузку всей коллекции?
EDIT:
Я заменяю карту списком, и она работает как талисман (без предварительной загрузки ее функцией size ()) ... Это очень странно ... Так что моя проблема решена с помощью списка, но мне любопытно чтобы знать почему он не запускается?