Ошибка инициализации Hibernate Lazy с Redis Cache - PullRequest
0 голосов
/ 06 февраля 2020

Я читал похожий пост с этой проблемой, но не смог получить ответ от этого поста. У меня есть класс, который имеет множество другого объекта. Все работает на моей локальной машине без redis кеша. На удаленной машине мы используем кэш redis, и для первого запроса на обслуживание я могу получить ответ, но для второго запроса я получаю ошибку failed to lazily initialize a collection of role. Так что в первую очередь я подумал, что это из-за ленивой загрузки.

Вот классы:

public class XClass implements Serializable {

    @Id
    @Column(name = "id")
    private String id;


    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)  // note that it is eager here
    @JoinTable(name = "details",
            joinColumns = {@JoinColumn(name = "old_id", referencedColumnName = "id")},
            inverseJoinColumns = {@JoinColumn(name = "new_id", referencedColumnName = "id")})
    private Set<MyClass> myclasses = new HashSet<>();

-

public class MyClass implements Serializable {

    @Embedded
    private ID id;

    @ElementCollection // fails here unless it is eager
    @Enumerated(EnumType.STRING)
    private Set<Flow> flows;

    @ElementCollection   // fails here unless it is eager
    @Enumerated(EnumType.STRING)
    private Set<Type> types;

    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name = "id")
    private XClass xclass;
}

Когда я запрашиваю объект XClass объект, он работает для первого запроса, но не может собрать второй объект MyClass, если они не извлекаются с нетерпением. (из-за кэша redis).

Но я не понимаю, почему, когда я запрашиваю другой объект который имеет коллекцию объекта MyClass не терпит неудачу. Пример класса:

public class YClass implements Serializable {

    @Id
    private String id;

    private String name;



    @OneToMany(mappedBy = "obj", fetch = FetchType.EAGER, cascade = {CascadeType.MERGE})
    private Set<MyClasss> myclasses = new HashSet<>();
}

Здесь не происходит сбоев, независимо от того, с нетерпением выбираются коллекции или нет. Я был бы признателен, если бы вы могли дать некоторое представление о том, что может быть не так.

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