Sample Application to demonstrate Multi-tenancy based on discriminator field using Spring Boot & Hibernate.
Since hibernate (5.x) has some issues (refer the link below) in supporting the 'Discriminator' based multi-tenancy strategy. This following workaround will help to achieve the same.
X-TenantIDhttp header and set's it in the ThreadLocal variable using
TenantContextclass. If http header is not present in request, it'll be rejected.
UserServiceAspectclass) intercepts the service call and set's the hibernate tenant filter.
EmptyInterceptor) class which sets the tenantId value during the save/delete/flush-dirty entity events.
TenantSupportinterface for the Entity interceptor to work.