Spring Data JPA y spring-security: filtro a nivel de base de datos (especialmente para la paginación)

Estoy tratando de agregar seguridad a nivel de método a mi proyecto de código abierto mediante anotaciones y seguridad spring. El problema al que me estoy enfrentando ahora son los métodos findAll, especialmente los de paginación (por ejemplo, devolver una página).

El uso de @PostFilter funciona en las listas (pero personalmente creo que no es una buena idea filtrar en la aplicación y no en la base de datos) pero falla completamente en las consultas de paginación.

Esto es problemático porque tengo una Entidad que contieneList<Compound>. Existen diferentes implementaciones de compuestos y un usuario solo puede tener el privilegio de leer uno de los Compuestos. Usos compuestosTABLE_PER_CLASS herencia. Repositorios implementadosQueryDslPredicateExecutor.

Mi idea es agregar un predicado a cada consulta que limite los resultados de retorno en función del usuario actual. Sin embargo, estoy un poco perdido en a) cómo deben verse el modelo de datos para el usuario y los roles yb) cómo crear el predicado (esto probablemente sea fácil una vez que se define el modelo). ¿O es que querydsl ya ofrece filtrado basado en tipos (en elementos contenidos en la clase consultada)?

Respuestas a la pregunta(2)

Su respuesta a la pregunta