用途
CurrentTenantIdentifierResolver:
<bean id="sessionFactory" > <property name="hibernateProperties"> <map> <entry key="hibernate.dialect" value="org.hibernate.dialect.SQLServer2012Dialect"> <entry key="hibernate.format_sql" value="true"> <entry key="hibernate.multi_tenant_connection_provider" value="com.company.hibernate.MultiTenantConnectionProviderImpl"> <entry key="hibernate.multiTenancy" value="DATAbase"> <!-- tenant resolver as spring bean --> <entry key="hibernate.tenant_identifier_resolver" value-ref="currentTenantIdentifierResolver"/> </map> </property></bean><bean id="currentTenantIdentifierResolver" ></bean>
简单的租户标识符解析器将如下所示:
public class CurrentTenantResolver implements CurrentTenantIdentifierResolver { public String resolveCurrentTenantIdentifier() { // retrieve tenant from logged in user User usr = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ; return usr.getTenantName(); } public boolean validateExistingCurrentSessions() { return true; }}请记住,上面的类是Spring bean,因此您可以像常规Spring bean一样自动连接任何spring bean(service / dao)。
每次Spring Need Session Hibernate都会从该bean中检索租户标识符。



