我在这里遇到一个小问题,希望有人可以帮助我。
我想做一个从Object到Integer的映射。 Object被标记为Fetchtype.Lazy。
当我进行映射时,我收到以下错误消息:
11:31:46,569 ERROR MappingProcessor:253 - Field mapping error -->
MapId: null
Type: null
Source parent class: ClassA
Source field name: MyObjectProperty
Source field type: null
Source field value: null
Dest parent class: ClassB
Dest field name: myIntegerProperty
Dest field type: java.lang.Integer
org.dozer.MappingException: java.lang.reflect.InvocationTargetException
at org.dozer.util.MappingUtils.throwMappingException(MappingUtils.java:88)
at org.dozer.util.ReflectionUtils.invoke(ReflectionUtils.java:258)
at org.dozer.propertydescriptor.GetterSetterPropertyDescriptor.invokeReadMethod(GetterSetterPropertyDescriptor.java:234)
at org.dozer.propertydescriptor.GetterSetterPropertyDescriptor.getPropertyValue(GetterSetterPropertyDescriptor.java:68)
at org.dozer.fieldmap.FieldMap.getSrcFieldValue(FieldMap.java:82)
的InnerException:
Caused by: java.lang.IllegalStateException: Attempt to access an unloaded field of detached instance
我在dozer xml文件中创建了一个自定义转换器,但从不调用转换器。我想应用程序在到达此转换器之前会出现问题。
有趣的是,我可以通过其他方式成功映射字段,因此Integer to Object。
我感谢任何想法,如果您需要进一步的信息,请给我一个字。
对所有人来说。
答案 0 :(得分:4)
如果这是Hibernate,我认为在数据bean绑定的Session之外访问了一个延迟加载的字段。
我建议加载实体并将其映射到同一事务中将解决问题。我当然不确定这一点:)