-
@Target({METHOD,CONSTRUCTOR,TYPE,PACKAGE}) @Retention(RUNTIME) @Documented @Inherited public @interface Allow
Allow a set ofSQLDialectto 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.METHODin order to specify that the given scope allows ANY of the suppliedSQLDialectto 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.SQLDialectCheckerfrom the jOOQ-checker module.Rules:
- In the absence of any
Allowannotation, no jOOQ API usage is allowed. - The combination of all
Allowannotations and of the inner-mostRequireannotation is applied for any given scope. - Nested packages are not creating nested scopes.
- If a versioned
SQLDialectis allowed (rather than aSQLDialect.family()), then the allowed version, all of itsSQLDialect.predecessor(), and itsSQLDialect.family()are allowed.
Apart from the above main purpose, the
Allowannotation also serves as a semantic namespace for other annotations, such asAllow.PlainSQL- Author:
- Lukas Eder
- See Also:
Require
- In the absence of any
-
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description SQLDialect[]valueA list of jOOQSQLDialectwhich are required on any jOOQ API method that is annotated withSupport.
-
-
-
Element Detail
-
value
SQLDialect[] value
A list of jOOQSQLDialectwhich are required on any jOOQ API method that is annotated withSupport.- Default:
- {org.jooq.SQLDialect.ACCESS, org.jooq.SQLDialect.ASE, org.jooq.SQLDialect.AURORA_MYSQL, org.jooq.SQLDialect.AURORA_POSTGRES, org.jooq.SQLDialect.COCKROACHDB, org.jooq.SQLDialect.DB2, org.jooq.SQLDialect.HANA, org.jooq.SQLDialect.INFORMIX, org.jooq.SQLDialect.INGRES, org.jooq.SQLDialect.MEMSQL, org.jooq.SQLDialect.ORACLE, org.jooq.SQLDialect.REDSHIFT, org.jooq.SQLDialect.SQLDATAWAREHOUSE, org.jooq.SQLDialect.SQLSERVER, org.jooq.SQLDialect.SYBASE, org.jooq.SQLDialect.TERADATA, org.jooq.SQLDialect.VERTICA, org.jooq.SQLDialect.CUBRID, org.jooq.SQLDialect.DEFAULT, org.jooq.SQLDialect.SQL99, org.jooq.SQLDialect.DERBY, org.jooq.SQLDialect.FIREBIRD, org.jooq.SQLDialect.H2, org.jooq.SQLDialect.HSQLDB, org.jooq.SQLDialect.MARIADB, org.jooq.SQLDialect.MYSQL, org.jooq.SQLDialect.POSTGRES, org.jooq.SQLDialect.SQLITE}
-
-