Jpa LazyInitializationException无法初始化代理-无会话
我的问题是我遇到了LazyInitializationExceptionJpa LazyInitializationException无法初始化代理-无会话,jpa,lazy-loading,lazy-initialization,Jpa,Lazy Loading,Lazy Initialization,我的问题是我遇到了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.
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]
我在一个班级里有两个@manytone关系
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;}
公共类产品实现可序列化{
@身份证
@列(name=“id”)
私人长id;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“id\u类别”)
私人类别;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“id\u子类”)
私有子类别子类别;
}
@实体
@资料
公共类子类别实现可序列化{
@OneToMany(mappedBy=“subCategory”,cascade=CascadeType.ALL,fetch=FetchType.EAGER)
私人上市产品;
}
@实体
@资料
公共类类别实现可序列化{
@OneToMany(mappedBy=“category”,cascade=CascadeType.ALL,fetch=FetchType.EAGER)
私有列表产品;}
我正在使用HttpSession。
我还尝试添加这个属性
spring.jpa.properties.hibernate.enable\u lazy\u load\u no\u trans=true
,但没有帮助。我想知道是否有解决办法。还尝试在服务中使用事务性Anotion。问题是您试图调用已分离的对象
(例如)
我不知道你想用这些东西做什么。但您应该像em.merge(detachedObject)
检查EntityManager的状态
您能否发布代码、如何获取数据以及异常抛出的确切位置。至少完成堆栈跟踪。
Product product = em.find(Product.class, id)
// somewhere `em.detach(product)` is called.
product.getCategory(); // It raises Exception