Estamos desarrollando una aplicación web multiusuario usando Spring boot + Spring data JPA con hibernate.
La tenencia múltiple se logra al tener una tabla de organización, que está conectada a casi todas las tablas como una clave externa. Lo que significa que cada llamada a la base de datos (métodos de consulta del repositorio de Spring Data) deberá verificarse con la identificación de la organización.
Necesito una manera de que, este "¿dónde organization_id =?" check para ser inyectado automáticamente para cada método de consulta. Para que los desarrolladores no tengan que preocuparse específicamente por las verificaciones de identificación de la organización.
¿Se puede lograr esto desde el marco Spring Data JPA? ¿Cuáles son los pros, los contras de este enfoque?
Gracias por tu tiempo.
Si tiene una clase base, diga BaseEntity, puede usar @org.hibernate.annotations.Filter:
En entidad base:
@FilterDef(name = "organizationFilter", parámetros = @ParamDef( name="orgId", type="long" )) @Filter(name = "organizationFilter", condition = "lang_id=:orgId")
En la inicialización de una sesión (¿anular JpaTransactionManager.createEntityManagerForTransaction()?):
session.enableFilter("organizationFilter").setParameter("orgId", organization.getId());