Closed cn-nemo closed 3 years ago
我们知道2.3.2版本兼容旧版jpa需要在这里FenixJpaClassWriter改字节码。另一个点ClassLoader是有区隔的。 有问题的情况是,如果dao层实例化比较早(比如在实例化filter时候就需要先实例化依赖的dao),会发现报空指针错误(FenixQueryLookupStrategy的字节码修改失败,所以createOldJpaQueryLookupStrategy方法默认返回了null);如果dao层实例化比较晚,则正常。 经过排查是发现由于ClassLoader区隔导致,作者可以测试修改一下。
嗯,后续有时间我看看
这个问题新版本应该没这个问题了,你可以再试试,是通过解决修改 javaassist 一些相关代码解决的。
我们知道2.3.2版本兼容旧版jpa需要在这里FenixJpaClassWriter改字节码。另一个点ClassLoader是有区隔的。 有问题的情况是,如果dao层实例化比较早(比如在实例化filter时候就需要先实例化依赖的dao),会发现报空指针错误(FenixQueryLookupStrategy的字节码修改失败,所以createOldJpaQueryLookupStrategy方法默认返回了null);如果dao层实例化比较晚,则正常。 经过排查是发现由于ClassLoader区隔导致,作者可以测试修改一下。