LazyInitializationException не удалось инициализировать прокси - нет сеанса

Моя проблема в том, что я получаю LazyInitializationException.

org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:148) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:266) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:73) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
at sk.kristian.dienes.eshop.entity.SubCategory_$$_jvsta89_5.hashCode(SubCategory_$$_jvsta89_5.java) ~[main/:na]
at sk.kristian.dienes.eshop.entity.Product.hashCode(Product.java:18) ~[main/:na]

У меня есть два отношения @ManyToOne в одном классе

public class Product implements Serializable{

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

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_category")
private Category category;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_sub_category")
private SubCategory subCategory;
}

@Entity
@Data
public class SubCategory implements Serializable {
   @OneToMany(mappedBy = "subCategory", cascade = CascadeType.ALL,fetch = FetchType.EAGER)
   private List<Product> products;
 }

 @Entity
 @Data
 public class Category implements Serializable {
    @OneToMany(mappedBy = "category", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<Product> products;}

Я использую HttpSession. Я также пытался добавить это свойство spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true но это не помогло. Я хотел бы знать, есть ли какое-либо решение. Также пытался использовать транзакционную аннотацию в сервисах.

1 ответ

Проблема в том, что вы пытаетесь вызвать объект, который отсоединен.

Например)

Product product = em.find(Product.class, id)

// somewhere `em.detach(product)` is called.

product.getCategory(); // It raises Exception

Я не знаю, что вы пытаетесь с этими объектами. Но вы должны присоединить сущность к EntityManager как em.merge(detachedObject)

Проверьте состояние EntityManager https://vladmihalcea.com/a-beginners-guide-to-jpahibernate-entity-state-transitions/

Другие вопросы по тегам