我在更新Spring Boot应用程序中的一个实体时得到了这个错误。
@Entity
public class User {
...
@ManyToMany
@JoinColumn(name="locationId")
@JsonIgnore
private List<Location> locations;
...
//getters and setters
}
@Entity
public class Coupon {
.....
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.DETACH, CascadeType.REFRESH}, fetch = FetchType.LAZY)
private List<Location> locations;
....
//getters and setters
}
List<Location> locations = new ArrayList<>();
locations.addAll(user.getLocations());
Coupon coupon = couponService.generateCoupons(CouponType.TIME , contract.getType().getTimeCredit(), locations, couponName);
userService updateUser(user);
@Override
public Coupon generateCoupons(CouponType type, int value, List<Location> locations, String couponName) {
Coupon coupon = new Coupon();
coupon.setActive(true);
coupon.setCode(generateRandomCouponCode());
coupon.setCouponCount(0);
coupon.setCouponLimit(1);
coupon.setCouponName(couponName);
LocalDateTime limit = LocalDateTime.now().plusYears(1);
coupon.setDateLimit(Date.from(limit.atZone(ZoneId.systemDefault()).toInstant()));
coupon.setLocations(locations);
coupon.setStartDate(new Date());
coupon.setType(type);
coupon.setUserLimit(1);
coupon.setValue(value);
return saveCoupon(coupon);
}
这是完整的堆栈跟踪
aused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: it.besmart.eshare.persistence.model.User.locations, could not initialize proxy - no Session
at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:587)
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:204)
at org.hibernate.collection.internal.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:148)
at org.hibernate.collection.internal.PersistentBag.size(PersistentBag.java:261)
at org.hibernate.collection.internal.PersistentBag.addAll(PersistentBag.java:328)
at it.besmart.eshare.service.CouponService.generateCoupons(CouponService.java:248)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy171.generateCoupons(Unknown Source)
at it.besmart.eshare.scheduler.cronjobs.CheckContract.executeInternal(CheckContract.java:102)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
... 1 common frames omitted
先生,您没有在这里指定提取类型Eager。默认情况下,它是懒惰的提取。但你急切地想去拿它。这里有一个例外。
user. getLocation();//Failed to lazy initialize User.
// locations the Exception what we seen in console
只需像这样修改用户模型类
@ManytoMany(fetch=FetchType.EAGER)
@JoinColumn(name="locationId")
@JsonIgnore
private List<Location> locations;
*非拥有实体OneToMany与mappedBy*
当我试图懒洋洋地读取子实体列表时,我(断断续续地)得到了这个错误。 关于这个错误,我已经浏览了一个关于SO的帖子列表。我所能找到的就是执行EAGER fetch或使用属性。我不想做任何一个,因为他们是反模式。 我使用的是spring-data-jpa。这是一个spring-boot项目。请求来自web层(Rest控制器)
我得到的错误是: 键入Rapport D'异常 描述Le serveur a rencontréune erreur interne qui léa satisfaire la requute. 原因mère 注意La trace complète de La case mère de cette erreur est disponible dans les fichiers journaux d
我尝试用java-hibernate-spring实现一个服务器REST,它返回一个JSON。 我有一个多对多关系图。 我解释得更好,我有一个供应商,有一个配料列表,每种配料都有一个供应商列表。 我创建了这个表: 然后我有配料模型: 然后我有供应商模型: 服务 供应对象 和IdAbstractObject “无法写入JSON:未能懒洋洋地初始化Role:myPackage.Comprigue.Co
我有下一个错误: 但是当我试图调用这个方法时,我在在上调用时也会出现同样的异常。我已经检查了事务管理器,它配置正确,事务在这一步中存在。此外,我已经检查了大量与此异常相关的stackoverflow的答案,但没有任何有用的。 它的原因是什么?
我有一个应用程序(Spring 4 MVC Hibernate 4 MySQL Maven集成示例使用注释),使用基于注释的配置将Spring与Hibernate集成。 我有这个实体: 和这个: 服务中的这种方法: 在控制器中: 但我得到了这个错误: