Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Add global node filter / query restriction support #3038

Open
Labels
@dpkass

Description

Problem

Common cases like soft delete and multi-tenancy require adding the same WHERE clause to every query. SDN has no built-in way to apply a predicate to all generated queries for an entity (derived queries, counts/exists, relationship loads). This is easy to miss and error-prone.

Proposal

Introduce an opt-in, entity-scoped restriction that SDN appends to generated Cypher.

@Node("Organization")
@QueryRestriction("deletedAt IS NULL")
@QueryRestriction("tenantId = $tenantId") // maybe even allow SpEL
class Organization { Instant deletedAt; String tenantId; }
  • Support simple parameters via a small SPI:
@Bean
QueryRestrictionParameters params(TenantResolver r) {
 return () -> Map.of("tenantId", r.currentTenantId());
}
  • Allow per-method opt-out:
@IgnoreQueryRestrictions
@Query("MATCH (o:Organization) RETURN o")
List<Organization> adminListAll();

Scope

Applied to derived queries (findAll, findById, count, exists, paging) and relationship loads. Does not change custom @query unless opted in/out as above.

Workarounds today

Duplicate predicates everywhere or change labels on delete—both brittle.

Prior art

Hibernate/JPA’s @SQLRestriction (and now deprecated predecessor @where) provide similar per-entity SQL predicates.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /