org.hibernate.annotations.SQLJoinTableRestriction Maven / Gradle / Ivy
Show all versions of beangle-hibernate-core Show documentation
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* Specifies a restriction written in native SQL to add to the generated SQL
* when querying the {@linkplain jakarta.persistence.JoinTable join table}
* of a collection.
*
* For example, @SQLJoinTableRestriction("status <> 'DELETED'")
* could be used to hide associations which have been soft-deleted from an
* association table.
*
* @apiNote This separate annotation is useful because it's possible to filter
* a many-to-many association both by a restriction on the
* join table, and, simultaneously, by a restriction on the
* associated entity table. The {@link SQLRestriction @SQLRestriction}
* annotation always filters entity tables.
*
* @since 6.3
*
* @author Gavin King
* @author Emmanuel Bernard
*
* @see SQLRestriction
*/
@Target({METHOD, FIELD})
@Retention(RUNTIME)
public @interface SQLJoinTableRestriction {
/**
* A predicate, written in native SQL.
*/
String value();
}