LocalSessionFactoryBuilder/Bean supports setMultiTenantConnectionProvider
Issue: SPR-14072
This commit is contained in:
parent
a1a06cd665
commit
5f6406430f
|
@ -29,6 +29,7 @@ import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
|
|||
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
|
||||
import org.hibernate.cfg.Configuration;
|
||||
import org.hibernate.context.spi.CurrentTenantIdentifierResolver;
|
||||
import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider;
|
||||
|
||||
import org.springframework.beans.factory.DisposableBean;
|
||||
import org.springframework.beans.factory.FactoryBean;
|
||||
|
@ -85,6 +86,8 @@ public class LocalSessionFactoryBean extends HibernateExceptionTranslator
|
|||
|
||||
private Object jtaTransactionManager;
|
||||
|
||||
private MultiTenantConnectionProvider multiTenantConnectionProvider;
|
||||
|
||||
private CurrentTenantIdentifierResolver currentTenantIdentifierResolver;
|
||||
|
||||
private TypeFilter[] entityTypeFilters;
|
||||
|
@ -238,6 +241,15 @@ public class LocalSessionFactoryBean extends HibernateExceptionTranslator
|
|||
this.jtaTransactionManager = jtaTransactionManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a {@link MultiTenantConnectionProvider} to be passed on to the SessionFactory.
|
||||
* @since 4.3
|
||||
* @see LocalSessionFactoryBuilder#setMultiTenantConnectionProvider
|
||||
*/
|
||||
public void setMultiTenantConnectionProvider(MultiTenantConnectionProvider multiTenantConnectionProvider) {
|
||||
this.multiTenantConnectionProvider = multiTenantConnectionProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a {@link CurrentTenantIdentifierResolver} to be passed on to the SessionFactory.
|
||||
* @see LocalSessionFactoryBuilder#setCurrentTenantIdentifierResolver
|
||||
|
@ -251,7 +263,6 @@ public class LocalSessionFactoryBean extends HibernateExceptionTranslator
|
|||
* <p>Default is to search all specified packages for classes annotated with
|
||||
* {@code @javax.persistence.Entity}, {@code @javax.persistence.Embeddable}
|
||||
* or {@code @javax.persistence.MappedSuperclass}.
|
||||
* @since 4.2
|
||||
* @see #setPackagesToScan
|
||||
*/
|
||||
public void setEntityTypeFilters(TypeFilter... entityTypeFilters) {
|
||||
|
@ -444,6 +455,10 @@ public class LocalSessionFactoryBean extends HibernateExceptionTranslator
|
|||
sfb.setJtaTransactionManager(this.jtaTransactionManager);
|
||||
}
|
||||
|
||||
if (this.multiTenantConnectionProvider != null) {
|
||||
sfb.setMultiTenantConnectionProvider(this.multiTenantConnectionProvider);
|
||||
}
|
||||
|
||||
if (this.currentTenantIdentifierResolver != null) {
|
||||
sfb.setCurrentTenantIdentifierResolver(this.currentTenantIdentifierResolver);
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
|
|||
import org.hibernate.cfg.AvailableSettings;
|
||||
import org.hibernate.cfg.Configuration;
|
||||
import org.hibernate.cfg.Environment;
|
||||
import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider;
|
||||
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
||||
|
||||
import org.springframework.core.io.Resource;
|
||||
|
@ -183,12 +184,21 @@ public class LocalSessionFactoryBuilder extends Configuration {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a {@link MultiTenantConnectionProvider} to be passed on to the SessionFactory.
|
||||
* @since 4.3
|
||||
* @see AvailableSettings#MULTI_TENANT_CONNECTION_PROVIDER
|
||||
*/
|
||||
public LocalSessionFactoryBuilder setMultiTenantConnectionProvider(MultiTenantConnectionProvider multiTenantConnectionProvider) {
|
||||
getProperties().put(AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER, multiTenantConnectionProvider);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify custom type filters for Spring-based scanning for entity classes.
|
||||
* <p>Default is to search all specified packages for classes annotated with
|
||||
* {@code @javax.persistence.Entity}, {@code @javax.persistence.Embeddable}
|
||||
* or {@code @javax.persistence.MappedSuperclass}.
|
||||
* @since 4.2
|
||||
* @see #scanPackages
|
||||
*/
|
||||
public LocalSessionFactoryBuilder setEntityTypeFilters(TypeFilter... entityTypeFilters) {
|
||||
|
|
Loading…
Reference in New Issue