Hibernate Data Cache: Objet.list не обновляется при добавлении - PullRequest
2 голосов
/ 26 февраля 2020

У меня есть два объекта, которые кэшируются в спящем режиме и связаны с отношением ManyToOne: Компания, у которой есть список обработок.

Когда я сохраняю новую обработку в своей базе данных, связанную с компанией, она не обновляет список лечения компании : когда я пытаюсь получить свою компанию позже, он не содержит нового лечения, сохраненного в базе данных.

@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Treatment implements Serializable {

    @ManyToOne(optional = false)
    @NotNull
    @JsonIgnoreProperties("treatments")
    private Company company;

    ...
}

@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Company implements Serializable {


    @OneToMany(mappedBy = "company", fetch = FetchType.EAGER)
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private Set<Treatment> treatments = new HashSet<>();

    ...
}

1 Ответ

0 голосов
/ 08 марта 2020

Хорошо, до сих пор я нашел одну вещь, которая работает: при сохранении я высвобождаю весь кеш.

@Override
@CacheEvict(value = "com.bloombooking.app.domain.Company.treatments", allEntries = true)
public Treatment save(Treatment treatment) {
    log.debug("Request to save Treatment : {}", treatment);
    return treatmentRepository.save(treatment);
}

Я не могу найти правильный способ вывести конкретный объект из кеша. Не стесняйтесь, если у вас есть лучший ответ.

...