Json-lib Hibernate Session

Json-lib使用hibernate返回的po时会出现延迟加载的问题,所以当JSONObject.formObject通过反射调用po时会出现session is closed的错误,解决办法是加上excludes让json读取po时不会去读取延迟加载的属性,一般情况下排除以下两种情况就可以了

"hibernateLazyInitializer","handler"

但有一种情况,如果你是借助类增强器对二进制Class文件进行强化处理(buildtime bytecode instrumentation),那么即使你没有延迟加载的属性也会出现延迟加载的问题,比如你用ant或者mvn编译的时候调用了org.hibernate.tool.instrument.javassist.InstrumentTask,那么hibernate就会给你加了一个fieldHandler属性,把这个也去掉才行,所以遇上json-lib的问题,除了需要openSessionInView之外,还需要把下面排除掉

"hibernateLazyInitializer","handler","fieldHandler"

相关推荐