Yanming Zhou opened SPR-14476 and commented
Spring should check if
CurrentTenantIdentifierResolver exists when open session.
HibernateTransactionManager:
SessionBuilder builder = getSessionFactory().withOptions();
CurrentTenantIdentifierResolver resolver = ((SessionFactoryImplementor)getSessionFactory()).getCurrentTenantIdentifierResolver();
if ( resolver != null ) {
builder.tenantIdentifier( resolver.resolveCurrentTenantIdentifier() );
}
Interceptor entityInterceptor = getEntityInterceptor();
if ( entityInterceptor != null ) {
builder.interceptor( entityInterceptor );
}
Session newSession = builder.openSession();
And other place like OpenSessionInViewFilter should fix also.
BTW: Hibernate has a bug itself, hibernate/hibernate-orm#1483 , Spring can make workaround by override method in LocalSessionFactoryBean
@Override
public void setCurrentTenantIdentifierResolver(CurrentTenantIdentifierResolver currentTenantIdentifierResolver) {
getHibernateProperties().put(AvailableSettings.MULTI_TENANT_IDENTIFIER_RESOLVER,
currentTenantIdentifierResolver);
super.setCurrentTenantIdentifierResolver(currentTenantIdentifierResolver);
}
Affects: 4.3.1
Issue Links:
Referenced from: commits 4e7e06f, 1670b4e
Yanming Zhou opened SPR-14476 and commented
Spring should check if
CurrentTenantIdentifierResolver exists when open session.
HibernateTransactionManager:
And other place like OpenSessionInViewFilter should fix also.
BTW: Hibernate has a bug itself, hibernate/hibernate-orm#1483 , Spring can make workaround by override method in LocalSessionFactoryBean
Affects: 4.3.1
Issue Links:
Referenced from: commits 4e7e06f, 1670b4e