최대 절전 모드로 해시 맵에서 항목을 삭제하려고합니다. 여기최대 절전 모드에서 해시 맵에서 항목을 제거하려면 어떻게해야합니까?
@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;
}
와 같은 객체에 내 제거 기능입니다 : 데이터베이스에서 항목을 삭제하지 않는 removeCharacteristic를 사용
@Transactional
public void removeCharacteristic(Characteristic charact)
{
// getCharacteristics().size();
getCharacteristics().remove(charact.getShortcut());
}
이
다음은 컬렉션 내 설정이다. 목록의 크기를 얻기 위해 줄의 주석 처리를 제거하면 (컬렉션의로드가 강제 됨) 레코드가 잘 삭제됩니다.
무엇이 문제입니까? 전체 컬렉션의로드를 강요하지 않으면 어떻게 할 수 있습니까?
EDIT : 지도를 List로 대체하고 매력적으로 실행됩니다 (이전에 size() 함수로로드하지 않고) ... 이것은 매우 이상합니다 ... 그래서 내 문제는 목록,하지만 왜 실행되지 않는지 궁금 해서요?
귀하의 거래는 제대로 최선을 다하고 있습니다 (세션 플러시)? –
플러시되지 않은 경우 주석 처리되지 않은 줄은 아무 것도하지 않기 때문에 나는 그렇다고 생각합니다. –
트랜잭션 관리자에 대한 로깅을 활성화하고 최대 절전 모드 구성이 올바른지 확인할 수 있습니까? –