Remove caching for table, schema and column names using SpEL expressions
This is a followup to https://github.com/spring-projects/spring-data-relational/pull/1461
While the above ticket successfully enables SpEL for Table and Schema, allowing us to have a lightweight solution for Multi Tenancy / Multi Schema, it only works for queries / select statements. (e.g. select .. from tenant_0, select ... from tenant_5)
For inserts, it will always use the first spel expression that was resolved (e.g. always insert into tenant_0)
A lightweight alternative to achieve the goal of multi schema, could have been the NamingStrategy. Unfortunately, this also gets Cached inside the CachingNamingStrategy and also evaluated only once.
Having a solution for either one of these, would be awesome.
Thx in advance
-- cut examples ---
https://github.com/table(name = "insurance", schema = "#{@tenantIdBean.getPrefix()}")
https://github.com/component public class TenantIdBean { public String getPrefix() { return "tenant_" + HttpInterceptor.getTenantId(); } }
The same problem probably appears for standard CrudRepository methods like findAll and findById and so on.
I think we should have some way to configure the Memoization of SQL statements with three options: NONE, ALWAYS and DYNAMIC, where the last checks if SpEL expressions are used and only uses memoization when none is.