在使用TestNG测试用例测试spring服务层时,我得到了延迟初始化异常。你能帮我解决一下这个问题。不确定我是否遗漏了以下测试用例中的任何内容。但是,如果我在Dao层中为相同的方法创建并执行测试用例,那么它的工作正常。
答案 0 :(得分:0)
您有以下映射
<set name="validResponses" lazy="true" inverse="true"
懒惰地加载InspectionQuestion.validResponses
字段。
我将假设
InspectionQuestion iq = inspectionStepQuestionService.getActiveInspectionQuestionByCode(QuestionType.COUNTRY_ORIGIN);
在Session
和Transaction
内完成。方法返回时,Transaction
已提交,Session
已关闭。因此,任何未被急切加载的字段都处于未初始化状态。在此之后尝试初始化它们将导致您看到的LazyInitializationException
。
简单的解决方案是将lazy="true"
更改为lazy="false"
,但这可能不是您想要的。
相反,可能会更改您的InspectionStepQuestionService
方法,以便在需要时完全初始化您的实体
Hibernate.initialize(inspectionQuestion /* or entity to return */);
答案 1 :(得分:0)
通过在测试类中添加以下注释,我能够维护会话。 @TransactionConfiguration(transactionManager =&#34; hibernateTransactionManager&#34;,defaultRollback = true)。