Java 延迟初始化异常,FetchType.EAGER

Java 延迟初始化异常,FetchType.EAGER,java,hibernate,dozer,Java,Hibernate,Dozer,我有一个经典的异常LazyInitializationException,但我的实体和映射是一个带有注释FetchType.EAGER的字段 1我将UserDaoImpl标记为@Transactional propagation=propagation.MANDATORY 2我有实体用户,它有一个映射字段 @CollectionOfElements(fetch = FetchType.EAGER) @JoinTable(name ="SOME_TABLE_NAME", joinColumns

我有一个经典的异常LazyInitializationException,但我的实体和映射是一个带有注释FetchType.EAGER的字段

1我将UserDaoImpl标记为@Transactional propagation=propagation.MANDATORY

2我有实体用户,它有一个映射字段

 @CollectionOfElements(fetch = FetchType.EAGER)
 @JoinTable(name ="SOME_TABLE_NAME", joinColumns =  
            @JoinColumn(name="SOME_COLUMN_NAME"))
 @MapKey(columns = @Column(name="SERVICE"))
 private Map<String, Integer> propertyName
3 UserService,其方法与UserDao相同,但标记为@Transactional。在那里,我使用UserDaoImpl执行方法,因此我可以从UserDAO获得一个UserModel,然后我想将其转换为UserDTO并返回

当我在UserService中调试这个应用程序时,我得到了正确初始化了这个映射的userModel。要进行此转换,我使用Dozzer映射。这里有一个问题,因为我在这个映射上得到了惰性初始化异常,它是在传递给dozzer方法之前初始化的


为什么在FetchType.EAGER中会出现延迟初始化异常?

您是否已完成此操作?:。你需要在DTO中实例化你的map属性。我没有看到这篇文章,谢谢,但是有其他方法解决这个问题吗?将接口映射更改为hashmap不是很好。事实上,如果您阅读这篇文章:,您将发现Dozer无法理解要实例化的映射接口实现的实例,并且默认为源映射子类型。