Hibernate 推土机抛出lazyInitializationException异常
我想把我的POJO映射到DTO。我没有任何自定义字段映射器,因为DTO中的所有字段都与POJO中的字段相同。但我的POJO涉及多个层次的映射。我的问题是,当我试图将POJO的内容复制到DTO时,我遇到了LazyInitializationException。下面是引发异常的代码Hibernate 推土机抛出lazyInitializationException异常,hibernate,dozer,lazy-initialization,Hibernate,Dozer,Lazy Initialization,我想把我的POJO映射到DTO。我没有任何自定义字段映射器,因为DTO中的所有字段都与POJO中的字段相同。但我的POJO涉及多个层次的映射。我的问题是,当我试图将POJO的内容复制到DTO时,我遇到了LazyInitializationException。下面是引发异常的代码 public TestInfoDTO startTest(long testId) { TestInfo info = testDAO.startTest(testId); Mapper mapper
public TestInfoDTO startTest(long testId)
{
TestInfo info = testDAO.startTest(testId);
Mapper mapper = new DozerBeanMapper();
try
{
// Exception thrown here.
infoDTO = mapper.map(info, TestInfoDTO.class);
} catch(Exception e) {
LOGGER.info("Exception Thrown While Mapping POJO to DTO");
e.printStackTrace();
}
return infoDTO;
}
这是我的POJO
@Entity
@Table(name = "TEST_INFO")
public class TestInfo implements Serializable,IAuditLog
{
private static final long serialVersionUID = 1L;
private long test_ID;
private String test_name;
private Date creation_date;
private String instructions;
private TestPaperInfo testPaperInfo;
private List<TestResults> testResults;
private List<TestResponse> testResponses;
private List<TestUtility> testUtility;
//Getters and setters with hibernate annotations.
}
@实体
@表(name=“测试信息”)
公共类TestInfo实现了可序列化的IAuditLog
{
私有静态最终长serialVersionUID=1L;
私人长测试ID;
私有字符串测试名称;
私人日期创建日期;
私有字符串指令;
私人TestPaperInfo TestPaperInfo;
私有列表测试结果;
私有列表测试响应;
私有列表测试工具;
//带有hibernate注释的getter和setter。
}
这是我的DTO
public class TestInfoDTO
{
private long test_ID;
private String test_name;
private Date creation_date;
private String instructions;
private TestPaperInfo testPaperInfo;
private List<TestResults> testResults;
private List<TestResponse> testResponses;
private List<TestUtility> testUtility;
//Getters and Setters.
}
public类TestInfoDTO
{
私人长测试ID;
私有字符串测试名称;
私人日期创建日期;
私有字符串指令;
私人TestPaperInfo TestPaperInfo;
私有列表测试结果;
私有列表测试响应;
私有列表测试工具;
//能手和二传手。
}
在上面的POJO中,TestPaperInfo有另一个类的集合,该类又有一个问题集合,每个问题都有一个答案集合。它们都使用JPA注释进行映射
我已经检查了从DAO获得的“info”对象的内容,所有内容都存在。但当我试图将其复制到DTO(“infoDTO”对象)时,会抛出LazyInitializationException。
这是我第一次使用DTO和推土机,所以有人能建议我是否遗漏了什么吗?或者问题是什么?提前谢谢。我想testDAO是@Transactionnal。这意味着一旦testDAO.startTest完成,事务将关闭
除非交易是提前开始的。在主startTest函数上放置@Transactionnal注释。这样,当dozer映射到DTO并访问代理模型TestInfo时,事务仍将打开。我猜testDAO是@Transactionnal。这意味着一旦testDAO.startTest完成,事务将关闭 除非交易是提前开始的。在主startTest函数上放置@Transactionnal注释。这样,当dozer映射到DTO并可以访问代理模型TestInfo时,事务仍将打开