2017-01-01 17 views
0

Моя проблема в том, что я получаю 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, но это не помогло. Я хотел бы знать, есть ли какое-либо решение. Также попытался использовать транзакционную анотацию в сервисах.

+0

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

ответ

0

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

Например)

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/

 Смежные вопросы

  • Нет связанных вопросов^_^