Hibernate 2-й уровень кеша: обновление кэшированной коллекции при создании сущности в отношении OneToMany - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть следующий класс

@Entity(name = "table")
@Table(name = "table")
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class SomeClass {
    @Id
    long id;
    @OneToMany(mappedBy = "someObject")
    @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
    private List<AnotherClass> anotherObjects;
}

И еще один класс:

public class AnotherClass{
    @Id   
    long id;
    @ManyToOne
    @JoinColumn(name = "some_coulmn")
    SomeClass someObject;

}

Сценарий заключается в том, что когда я создаю объект типа AnotherClass, присваивая ему определенный someClass объект, а затем получить этот someClass объект, я не вижу вновь созданный объект (если я не очистить кэш и перезапустить).

Могу ли я что-нибудь сделать, чтобы обновить коллекцию, представляющую отношение между двумя сущностями, всякий раз, когда в эту связь добавляется новая сущность?

Примечание: я использую hibernate 5.3 в Spring boot 2.1. 8 проект.

1 Ответ

0 голосов
/ 07 ноября 2019

Когда у вас двунаправленные отношения, я думаю обычно желательно обновить оба конца. В вашем случае, при создании экземпляра AnotherClass и связывании его с экземпляром SomeClass, вы также должны добавить AnotherClass в соответствующий список anotherObjects.

Более подробные объяснения вы найдете в этого вопроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...