Annotation Interface SQLRestriction


@Target({TYPE,METHOD,FIELD}) @Retention(RUNTIME) public @interface SQLRestriction
Specifies a restriction written in native SQL to add to the generated SQL for entities or collections.

For example, @SQLRestriction could be used to hide entity instances which have been soft-deleted, either for the entity class itself:

@Entity
@SQLRestriction("status <> 'DELETED'")
class Document {
    ...
    @Enumerated(STRING)
    Status status;
    ...
}

or, at the level of an association to the entity:

@OneToMany(mappedBy = "owner")
@SQLRestriction("status <> 'DELETED'")
List<Document> documents;

The SQLJoinTableRestriction annotation lets a restriction be applied to an association table:

@ManyToMany
@JoinTable(name = "collaborations")
@SQLRestriction("status <> 'DELETED'")
@SQLJoinTableRestriction("status = 'ACTIVE'")
List<Document> documents;

Note that @SQLRestrictions are always applied and cannot be disabled. Nor may they be parameterized. They're therefore much less flexible than filters.

Since:
6.3
See Also:
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    A predicate, written in native SQL.
  • Element Details

    • value

      String value
      A predicate, written in native SQL.