![](/img/trans.png)
[英]LazyInitializationException in spite of Spring transaction?
[英]Spring Boot LazyInitializationException inside Transaction
我在Spring Boot中有一個服務層類。 此類允許獲取我的模型。 我將所有模型對象都轉換為響應對象(DTO)。 問題是我在事務內得到了LazyLoadException。 我認為這不應該發生,因為數據庫連接仍處於打開狀態。 還是這是錯誤的? 提前致謝!
@Cacheable
@Transactional(propagation = Propagation.REQUIRED)
public List<DatabaseServerResponse> getDatabaseServers(Pageable pageable){
System.err.println(TransactionSynchronizationManager.isActualTransactionActive());
List<DatabaseServerResponse> databaseServerResponses= databaseServerRepository
.findAll(pageable)
.get()
.map(databaseServer -> databaseServerConverter.convertToDatabaseServerResponse(databaseServer))
.collect(Collectors.toList());
System.err.println(TransactionSynchronizationManager.isActualTransactionActive());
return databaseServerResponses;
}
由以下原因引起:org.hibernate.LazyInitializationException:無法初始化代理[com.sportradar.promt.domain.promt.Environment#1]-org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:169)上沒有會話org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor.intercept(ByteBuddyInterceptor.java:45)的.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:309)在org.hibernate.proxy.ProxyConfiguration $ InterceptorDispatcher。 .java:95),位於com.sportradar.promt.domain.promt.Environment $ HibernateProxy $ ZNab0Ju2.getName(未知源),位於sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法),位於sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl。 java:62)位於sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)位於java.lang.reflect.Method.invoke(Method.java:498)在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField (BeanProp ertyWriter.java:688),位於com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)...省略了109個常見框架
@Entity
@Table(name = "databaseservers")
@Getter
@Setter
public class DatabaseServer {
@Id
private Integer id;
@Column(name = "name")
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "environment_id", referencedColumnName = "id", columnDefinition = "TINYINT(3)")
private Environment environment;
@Column(name = "host")
private String host;
@Column(name = "dbuser")
private String dbUser;
@Column(name = "dbpasswd")
private String dbPassword;
}
視圖打開設置已被禁用。
jpa:
open-in-view: false
好的,我找到了解決方案,將Environment.class注入了DTO,這根本不起作用。 我只是忘了將Environment.class映射到EnvironmentResponse.class
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.