@Target(value={METHOD,CONSTRUCTOR,TYPE,PACKAGE}) @Retention(value=RUNTIME) @Documented @Inherited public @interface Allow
SQLDialect
to be supported by any jOOQ statement in
the scope of this annotation.
This annotation can be used at the use-site of jOOQ API at any given scope
ElementType.PACKAGE
, ElementType.TYPE
,
ElementType.METHOD
in order to specify that the given scope allows
ANY of the supplied SQLDialect
to be supported by all usage of jOOQ
API within the scope. For example:
// Allow only MYSQL or ORACLE dialect support to be used within the class scope
@Allow(MYSQL, ORACLE)
public class MySQLAndOracleDAO {
// Allow rule from class applies to this method
public void mysqlAndOracleMethod() {
DSL.using(configuration)
.insertInto(TABLE, TABLE.COLUMN)
.values(1)
// This type checks as it works on both MySQL and Oracle
.onDuplicateKeyUpdate()
.set(TABLE.COLUMN, 2)
.execute();
}
// Refine class Allow rule with additional requirement
@Require(ORACLE)
public void oracleOnlyMethod() {
DSL.using(configuration)
.mergeInto(TABLE)
.using(selectOne())
.on(TABLE.COLUMN.eq(1))
.whenMatchedThenUpdate()
.set(TABLE.COLUMN, 2)
.whenNotMatchedThenInsert(TABLE.COLUMN)
.values(1)
.execute();
}
}
Type checking for these annotations can be supplied by
org.jooq.checker.SQLDialectChecker
from the jOOQ-checker module.
Allow
annotation, no jOOQ API usage is
allowed.Allow
annotations and of the inner-most
Require
annotation is applied for any given scope.SQLDialect
is allowed (rather than a
SQLDialect.family()
), then the allowed version, all of its
SQLDialect.predecessor()
, and its SQLDialect.family()
are
allowed.
Apart from the above main purpose, the Allow
annotation also serves
as a semantic namespace for other annotations, such as Allow.PlainSQL
Require
Modifier and Type | Optional Element and Description |
---|---|
SQLDialect[] |
value
A list of jOOQ
SQLDialect which are required on any jOOQ API
method that is annotated with Support . |
public abstract SQLDialect[] value
SQLDialect
which are required on any jOOQ API
method that is annotated with Support
.Copyright © 2019. All rights reserved.