2017-01-01 4 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] 

은 내가 HttpSession을 사용하고 하나 개의 클래스

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;} 

두 @ManyToOne 관계를 가지고있다. 이 속성을 추가하려고 시도했지만 spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true하지만 도움이되지 않았습니다. 나는 해결책이 있는지 알고 싶다. 또한 서비스에서 Transactional anotation을 사용하려고했습니다.

+0

당신이 코드를 게시 할 수 EntityManager의 의 em.merge(detachedObject)

확인 상태처럼 EntityManager의 엔터티를 다시 연결해야합니다. 적어도 스택 추적을 완료하십시오. –

답변

0

문제는 분리 된 개체를 호출하는 것입니다. 예를 들어

)

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

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

product.getCategory(); // It raises Exception 

나는 당신이 그 개체를 시도 모르겠어요. 그러나 당신은 당신이 데이터와 정확히 어디에 예외가 던지고를 가져 오는 방법을 https://vladmihalcea.com/a-beginners-guide-to-jpahibernate-entity-state-transitions/