我必须在属性&中添加一个lazy = true。我已经添加了一个ant任务来引入该类,以使hibernate能够在我的pom中使它变得懒惰。
有没有办法测试现在这个属性在运行时是否处于延迟模式而不看hibernate sql控制台输出?我的意思是单元测试(即时使用带junit的弹簧测试)。我不想测试xml映射中是否存在lazy属性。仅这一点并不能确保休眠将其视为一种懒惰的属性。
我想要一个junit测试,以确保测试人员揭示的这个错误将来不再出现(我并不是唯一的项目)。
我正在遵循(最好的)练习,即每个非常微不足道的bug应该有一个自动测试,以防止他回来。(顺便说一句,我从Spring框架测试中接受了这个想法)
答案 0 :(得分:1)
您可以加载实体,关闭会话,然后断言访问该属性时会引发LazyInitializationException
。
答案 1 :(得分:1)
我找到了另一个解决方案:
org.hibernate.Hibernate.isPropertyInitialized(pojo, propertyName) check if the property is initialized..
LazyInitializationException强制关闭会话的技巧将导致其他测试的问题&如果分享这个,就重新打开一个。
答案 2 :(得分:1)
我们未能成功使用isPropertyInitialized(entity, "property")
,但isInitialized(entity.getProperty())
效果不错