在3.3.1 中,默认的配置属性 bytecode.provider 为 javassist,而在 3.2.6 中默认为cglib
在3.3.1 中如果不配置此属性的话, session.load() 出来的实体对象为 javassist 代理,如果使用openSessionInviewFilter 的话, 有可能出现其代理的对象取不到值得情况,起码我是出现了,折腾了好久才解决,希望对刚升级有此困扰的人有所帮助吧。
解决办法:
设置 bytecode.provider 为cglib
3.2.6 中的,其getString方法的第三项为默认值
public static BytecodeProvider buildBytecodeProvider(Properties properties) {
String provider = PropertiesHelper.getString( Environment.BYTECODE_PROVIDER, properties, "cglib" );
log.info( "Bytecode provider name : " + provider );
return buildBytecodeProvider( provider );
}
3.3.1 中的
public static BytecodeProvider buildBytecodeProvider(Properties properties) {
String provider = PropertiesHelper.getString( Environment.BYTECODE_PROVIDER, properties, "javassist" );
log.info( "Bytecode provider name : " + provider );
return buildBytecodeProvider( provider );
}