我有一个经典例外LazyInitializationException
,但我将我的实体和地图作为带注释的字段FetchType.EAGER
1)我将UserDaoImpl
标记为@Transactional
(propagation = Propagation.MANDATORY
)
2)我有实体User
,它有一个地图字段
@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
的延迟初始化异常?