diff --git a/pom.xml b/pom.xml index 5e508ed58..9e190df5f 100644 --- a/pom.xml +++ b/pom.xml @@ -287,6 +287,14 @@ com/querydsl/core/types/dsl/PathBuilderValidator com/querydsl/sql/Union com/querydsl/sql/SQLListenerContextImpl + com/querydsl/sql/dml/SQLDeleteClause + com/querydsl/sql/dml/SQLInsertClause + com/querydsl/sql/dml/SQLUpdateClause + com/querydsl/sql/mssql/SQLServerQuery + com/querydsl/sql/mysql/MySQLQuery + com/querydsl/sql/oracle/OracleQuery + com/querydsl/sql/postgresql/PostgreSQLQuery + com/querydsl/sql/teradata/TeradataQuery BACKWARD_COMPATIBLE_USER true diff --git a/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLDeleteClause.java b/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLDeleteClause.java index 7169c7449..68bec72eb 100644 --- a/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLDeleteClause.java +++ b/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLDeleteClause.java @@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory; import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; +import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import com.querydsl.core.*; import com.querydsl.core.QueryFlag.Position; import com.querydsl.core.dml.DeleteClause; @@ -44,7 +45,7 @@ import com.querydsl.sql.SQLSerializer; * @param The type extending this class. * */ -public abstract class AbstractSQLDeleteClause & DeleteClause> extends AbstractSQLClause implements DeleteClause { +public abstract class AbstractSQLDeleteClause> extends AbstractSQLClause implements DeleteClause { protected static final Logger logger = LoggerFactory.getLogger(AbstractSQLDeleteClause.class); @@ -83,6 +84,7 @@ public abstract class AbstractSQLDeleteClause & D * @param flag query flag * @return the current object */ + @WithBridgeMethods(SQLDeleteClause.class) public C addFlag(Position position, String flag) { metadata.addFlag(new QueryFlag(position, flag)); return (C) this; @@ -95,6 +97,7 @@ public abstract class AbstractSQLDeleteClause & D * @param flag query flag * @return the current object */ + @WithBridgeMethods(SQLDeleteClause.class) public C addFlag(Position position, Expression flag) { metadata.addFlag(new QueryFlag(position, flag)); return (C) this; @@ -105,6 +108,7 @@ public abstract class AbstractSQLDeleteClause & D * * @return the current object */ + @WithBridgeMethods(SQLDeleteClause.class) public C addBatch() { batches.add(metadata); metadata = new DefaultQueryMetadata(); @@ -246,12 +250,14 @@ public abstract class AbstractSQLDeleteClause & D } } + @WithBridgeMethods(SQLDeleteClause.class) public C where(Predicate p) { metadata.addWhere(p); return (C) this; } @Override + @WithBridgeMethods(SQLDeleteClause.class) public C where(Predicate... o) { for (Predicate p : o) { metadata.addWhere(p); @@ -259,6 +265,7 @@ public abstract class AbstractSQLDeleteClause & D return (C) this; } + @WithBridgeMethods(SQLDeleteClause.class) public C limit(@Nonnegative long limit) { metadata.setModifiers(QueryModifiers.limit(limit)); return (C) this; diff --git a/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLInsertClause.java b/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLInsertClause.java index 153120bc6..5fe18c52e 100644 --- a/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLInsertClause.java +++ b/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLInsertClause.java @@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory; import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; +import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import com.querydsl.core.DefaultQueryMetadata; import com.querydsl.core.JoinType; import com.querydsl.core.QueryFlag; @@ -42,7 +43,7 @@ import com.querydsl.sql.types.Null; * @param The type extending this class. * */ -public abstract class AbstractSQLInsertClause & InsertClause> extends AbstractSQLClause implements InsertClause { +public abstract class AbstractSQLInsertClause> extends AbstractSQLClause implements InsertClause { protected static final Logger logger = LoggerFactory.getLogger(AbstractSQLInsertClause.class); @@ -97,6 +98,7 @@ public abstract class AbstractSQLInsertClause & I * @param flag query flag * @return the current object */ + @WithBridgeMethods(SQLInsertClause.class) public C addFlag(Position position, String flag) { metadata.addFlag(new QueryFlag(position, flag)); return (C) this; @@ -109,6 +111,7 @@ public abstract class AbstractSQLInsertClause & I * @param flag query flag * @return the current object */ + @WithBridgeMethods(SQLInsertClause.class) public C addFlag(Position position, Expression flag) { metadata.addFlag(new QueryFlag(position, flag)); return (C) this; @@ -119,6 +122,7 @@ public abstract class AbstractSQLInsertClause & I * * @return the current object */ + @WithBridgeMethods(SQLInsertClause.class) public C addBatch() { if (subQueryBuilder != null) { subQuery = subQueryBuilder.select(values.toArray(new Expression[values.size()])).clone(); @@ -148,6 +152,7 @@ public abstract class AbstractSQLInsertClause & I } @Override + @WithBridgeMethods(SQLInsertClause.class) public C columns(Path... columns) { this.columns.addAll(Arrays.asList(columns)); return (C) this; @@ -463,6 +468,7 @@ public abstract class AbstractSQLInsertClause & I } @Override + @WithBridgeMethods(SQLInsertClause.class) public C select(SubQueryExpression sq) { subQuery = sq; for (Map.Entry, Object> entry : sq.getMetadata().getParams().entrySet()) { @@ -472,6 +478,7 @@ public abstract class AbstractSQLInsertClause & I } @Override + @WithBridgeMethods(SQLInsertClause.class) public C set(Path path, T value) { columns.add(path); if (value instanceof Expression) { @@ -485,6 +492,7 @@ public abstract class AbstractSQLInsertClause & I } @Override + @WithBridgeMethods(SQLInsertClause.class) public C set(Path path, Expression expression) { columns.add(path); values.add(expression); @@ -492,6 +500,7 @@ public abstract class AbstractSQLInsertClause & I } @Override + @WithBridgeMethods(SQLInsertClause.class) public C setNull(Path path) { columns.add(path); values.add(Null.CONSTANT); @@ -499,6 +508,7 @@ public abstract class AbstractSQLInsertClause & I } @Override + @WithBridgeMethods(SQLInsertClause.class) public C values(Object... v) { for (Object value : v) { if (value instanceof Expression) { @@ -530,6 +540,7 @@ public abstract class AbstractSQLInsertClause & I * @param bean bean to use for population * @return the current object */ + @WithBridgeMethods(SQLInsertClause.class) public C populate(Object bean) { return populate(bean, DefaultMapper.DEFAULT); } @@ -543,6 +554,7 @@ public abstract class AbstractSQLInsertClause & I * @return the current object */ @SuppressWarnings("rawtypes") + @WithBridgeMethods(SQLInsertClause.class) public C populate(T obj, Mapper mapper) { Map, Object> values = mapper.createMap(entity, obj); for (Map.Entry, Object> entry : values.entrySet()) { diff --git a/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLUpdateClause.java b/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLUpdateClause.java index f3c0cbbd5..d24d98ecf 100644 --- a/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLUpdateClause.java +++ b/querydsl-sql/src/main/java/com/querydsl/sql/dml/AbstractSQLUpdateClause.java @@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory; import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; +import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import com.querydsl.core.*; import com.querydsl.core.QueryFlag.Position; import com.querydsl.core.dml.UpdateClause; @@ -46,7 +47,7 @@ import com.querydsl.sql.types.Null; * @param The type extending this class. * */ -public abstract class AbstractSQLUpdateClause & UpdateClause> extends AbstractSQLClause implements UpdateClause { +public abstract class AbstractSQLUpdateClause> extends AbstractSQLClause implements UpdateClause { protected static final Logger logger = LoggerFactory.getLogger(AbstractSQLUpdateClause.class); @@ -81,6 +82,7 @@ public abstract class AbstractSQLUpdateClause & U * @param flag query flag * @return the current object */ + @WithBridgeMethods(SQLUpdateClause.class) public C addFlag(Position position, String flag) { metadata.addFlag(new QueryFlag(position, flag)); return (C) this; @@ -93,6 +95,7 @@ public abstract class AbstractSQLUpdateClause & U * @param flag query flag * @return the current object */ + @WithBridgeMethods(SQLUpdateClause.class) public C addFlag(Position position, Expression flag) { metadata.addFlag(new QueryFlag(position, flag)); return (C) this; @@ -103,6 +106,7 @@ public abstract class AbstractSQLUpdateClause & U * * @return the current object */ + @WithBridgeMethods(SQLUpdateClause.class) public C addBatch() { batches.add(new SQLUpdateBatch(metadata, updates)); updates = Maps.newLinkedHashMap(); @@ -245,6 +249,7 @@ public abstract class AbstractSQLUpdateClause & U } @Override + @WithBridgeMethods(SQLUpdateClause.class) public C set(Path path, T value) { if (value instanceof Expression) { updates.put(path, (Expression) value); @@ -257,6 +262,7 @@ public abstract class AbstractSQLUpdateClause & U } @Override + @WithBridgeMethods(SQLUpdateClause.class) public C set(Path path, Expression expression) { if (expression != null) { updates.put(path, expression); @@ -267,12 +273,14 @@ public abstract class AbstractSQLUpdateClause & U } @Override + @WithBridgeMethods(SQLUpdateClause.class) public C setNull(Path path) { updates.put(path, Null.CONSTANT); return (C) this; } @Override + @WithBridgeMethods(SQLUpdateClause.class) public C set(List> paths, List values) { for (int i = 0; i < paths.size(); i++) { if (values.get(i) instanceof Expression) { @@ -286,12 +294,14 @@ public abstract class AbstractSQLUpdateClause & U return (C) this; } + @WithBridgeMethods(SQLUpdateClause.class) public C where(Predicate p) { metadata.addWhere(p); return (C) this; } @Override + @WithBridgeMethods(SQLUpdateClause.class) public C where(Predicate... o) { for (Predicate p : o) { metadata.addWhere(p); @@ -299,6 +309,7 @@ public abstract class AbstractSQLUpdateClause & U return (C) this; } + @WithBridgeMethods(SQLUpdateClause.class) public C limit(@Nonnegative long limit) { metadata.setModifiers(QueryModifiers.limit(limit)); return (C) this; @@ -320,6 +331,7 @@ public abstract class AbstractSQLUpdateClause & U * @return the current object */ @SuppressWarnings("unchecked") + @WithBridgeMethods(SQLUpdateClause.class) public C populate(Object bean) { return populate(bean, DefaultMapper.DEFAULT); } @@ -332,6 +344,7 @@ public abstract class AbstractSQLUpdateClause & U * @return the current object */ @SuppressWarnings({ "rawtypes", "unchecked" }) + @WithBridgeMethods(SQLUpdateClause.class) public C populate(T obj, Mapper mapper) { Collection> primaryKeyColumns = entity.getPrimaryKey() != null ? entity.getPrimaryKey().getLocalColumns() diff --git a/querydsl-sql/src/main/java/com/querydsl/sql/mssql/AbstractSQLServerQuery.java b/querydsl-sql/src/main/java/com/querydsl/sql/mssql/AbstractSQLServerQuery.java index ff5c66de4..6abe4aaad 100644 --- a/querydsl-sql/src/main/java/com/querydsl/sql/mssql/AbstractSQLServerQuery.java +++ b/querydsl-sql/src/main/java/com/querydsl/sql/mssql/AbstractSQLServerQuery.java @@ -17,6 +17,7 @@ import java.sql.Connection; import javax.inject.Provider; +import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import com.querydsl.core.JoinFlag; import com.querydsl.core.QueryMetadata; import com.querydsl.sql.AbstractSQLQuery; @@ -30,7 +31,7 @@ import com.querydsl.sql.Configuration; * * @author tiwe */ -public abstract class AbstractSQLServerQuery> extends AbstractSQLQuery { +public abstract class AbstractSQLServerQuery> extends AbstractSQLQuery { public AbstractSQLServerQuery(Connection conn, Configuration configuration, QueryMetadata metadata) { super(conn, configuration, metadata); } @@ -45,6 +46,7 @@ public abstract class AbstractSQLServerQuery> * @param tableHints table hints * @return the current object */ + @WithBridgeMethods(SQLServerQuery.class) public C tableHints(SQLServerTableHints... tableHints) { if (tableHints.length > 0) { String hints = SQLServerGrammar.tableHints(tableHints); diff --git a/querydsl-sql/src/main/java/com/querydsl/sql/mysql/AbstractMySQLQuery.java b/querydsl-sql/src/main/java/com/querydsl/sql/mysql/AbstractMySQLQuery.java index 66115b7b2..f22b18b68 100644 --- a/querydsl-sql/src/main/java/com/querydsl/sql/mysql/AbstractMySQLQuery.java +++ b/querydsl-sql/src/main/java/com/querydsl/sql/mysql/AbstractMySQLQuery.java @@ -19,6 +19,7 @@ import java.sql.Connection; import javax.inject.Provider; import com.google.common.base.Joiner; +import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import com.querydsl.core.JoinFlag; import com.querydsl.core.QueryFlag.Position; import com.querydsl.core.QueryMetadata; @@ -34,7 +35,7 @@ import com.querydsl.sql.SQLQuery; * @param result type * @param the concrete subtype */ -public abstract class AbstractMySQLQuery> extends AbstractSQLQuery { +public abstract class AbstractMySQLQuery> extends AbstractSQLQuery { protected static final String WITH_ROLLUP = "\nwith rollup "; @@ -72,6 +73,7 @@ public abstract class AbstractMySQLQuery> ex * * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C bigResult() { return addFlag(Position.AFTER_SELECT, SQL_BIG_RESULT); } @@ -84,6 +86,7 @@ public abstract class AbstractMySQLQuery> ex * * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C bufferResult() { return addFlag(Position.AFTER_SELECT, SQL_BUFFER_RESULT); } @@ -94,6 +97,7 @@ public abstract class AbstractMySQLQuery> ex * * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C cache() { return addFlag(Position.AFTER_SELECT, SQL_CACHE); } @@ -104,6 +108,7 @@ public abstract class AbstractMySQLQuery> ex * * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C calcFoundRows() { return addFlag(Position.AFTER_SELECT, SQL_CALC_FOUND_ROWS); } @@ -114,6 +119,7 @@ public abstract class AbstractMySQLQuery> ex * * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C highPriority() { return addFlag(Position.AFTER_SELECT, HIGH_PRIORITY); } @@ -124,6 +130,7 @@ public abstract class AbstractMySQLQuery> ex * @param var variable name * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C into(String var) { return addFlag(Position.END, "\ninto " + var); } @@ -134,6 +141,7 @@ public abstract class AbstractMySQLQuery> ex * @param file file to write to * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C intoDumpfile(File file) { return addFlag(Position.END, "\ninto dumpfile '" + file.getPath() + "'"); } @@ -145,6 +153,7 @@ public abstract class AbstractMySQLQuery> ex * @param file file to write to * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C intoOutfile(File file) { return addFlag(Position.END, "\ninto outfile '" + file.getPath() + "'"); } @@ -155,6 +164,7 @@ public abstract class AbstractMySQLQuery> ex * * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C lockInShareMode() { return addFlag(Position.END, LOCK_IN_SHARE_MODE); } @@ -165,6 +175,7 @@ public abstract class AbstractMySQLQuery> ex * * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C noCache() { return addFlag(Position.AFTER_SELECT, SQL_NO_CACHE); } @@ -175,6 +186,7 @@ public abstract class AbstractMySQLQuery> ex * * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C smallResult() { return addFlag(Position.AFTER_SELECT, SQL_SMALL_RESULT); } @@ -186,6 +198,7 @@ public abstract class AbstractMySQLQuery> ex * * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C straightJoin() { return addFlag(Position.AFTER_SELECT, STRAIGHT_JOIN); } @@ -198,6 +211,7 @@ public abstract class AbstractMySQLQuery> ex * @param indexes index names * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C forceIndex(String... indexes) { return addJoinFlag(" force index (" + JOINER.join(indexes) + ")", JoinFlag.Position.END); } @@ -209,6 +223,7 @@ public abstract class AbstractMySQLQuery> ex * @param indexes index names * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C ignoreIndex(String... indexes) { return addJoinFlag(" ignore index (" + JOINER.join(indexes) + ")", JoinFlag.Position.END); } @@ -220,6 +235,7 @@ public abstract class AbstractMySQLQuery> ex * @param indexes index names * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C useIndex(String... indexes) { return addJoinFlag(" use index (" + JOINER.join(indexes) + ")", JoinFlag.Position.END); } @@ -232,6 +248,7 @@ public abstract class AbstractMySQLQuery> ex * * @return the current object */ + @WithBridgeMethods(MySQLQuery.class) public C withRollup() { return addFlag(Position.AFTER_GROUP_BY, WITH_ROLLUP); } diff --git a/querydsl-sql/src/main/java/com/querydsl/sql/oracle/AbstractOracleQuery.java b/querydsl-sql/src/main/java/com/querydsl/sql/oracle/AbstractOracleQuery.java index 1fb99bcbf..782724083 100644 --- a/querydsl-sql/src/main/java/com/querydsl/sql/oracle/AbstractOracleQuery.java +++ b/querydsl-sql/src/main/java/com/querydsl/sql/oracle/AbstractOracleQuery.java @@ -17,6 +17,7 @@ import java.sql.Connection; import javax.inject.Provider; +import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import com.querydsl.core.QueryFlag.Position; import com.querydsl.core.QueryMetadata; import com.querydsl.core.types.Expression; @@ -31,7 +32,7 @@ import com.querydsl.sql.Configuration; * @param result type * @param the concrete subtype */ -public abstract class AbstractOracleQuery> extends AbstractSQLQuery { +public abstract class AbstractOracleQuery> extends AbstractSQLQuery { protected static final String CONNECT_BY = "\nconnect by "; @@ -57,6 +58,7 @@ public abstract class AbstractOracleQuery> e * @param cond condition * @return the current object */ + @WithBridgeMethods(OracleQuery.class) public C connectByPrior(Predicate cond) { return addFlag(Position.BEFORE_ORDER, CONNECT_BY_PRIOR, cond); } @@ -67,6 +69,7 @@ public abstract class AbstractOracleQuery> e * @param cond condition * @return the current object */ + @WithBridgeMethods(OracleQuery.class) public C connectBy(Predicate cond) { return addFlag(Position.BEFORE_ORDER, CONNECT_BY, cond); } @@ -77,6 +80,7 @@ public abstract class AbstractOracleQuery> e * @param cond condition * @return the current object */ + @WithBridgeMethods(OracleQuery.class) public C connectByNocyclePrior(Predicate cond) { return addFlag(Position.BEFORE_ORDER, CONNECT_BY_NOCYCLE_PRIOR, cond); } @@ -87,6 +91,7 @@ public abstract class AbstractOracleQuery> e * @param cond condition * @return the current object */ + @WithBridgeMethods(OracleQuery.class) public C startWith(Predicate cond) { return addFlag(Position.BEFORE_ORDER, START_WITH, cond); } @@ -98,6 +103,7 @@ public abstract class AbstractOracleQuery> e * @param path path * @return the current object */ + @WithBridgeMethods(OracleQuery.class) public C orderSiblingsBy(Expression path) { return addFlag(Position.BEFORE_ORDER, ORDER_SIBLINGS_BY, path); } diff --git a/querydsl-sql/src/main/java/com/querydsl/sql/postgresql/AbstractPostgreSQLQuery.java b/querydsl-sql/src/main/java/com/querydsl/sql/postgresql/AbstractPostgreSQLQuery.java index 6fe10b769..cfbb5785a 100644 --- a/querydsl-sql/src/main/java/com/querydsl/sql/postgresql/AbstractPostgreSQLQuery.java +++ b/querydsl-sql/src/main/java/com/querydsl/sql/postgresql/AbstractPostgreSQLQuery.java @@ -17,6 +17,7 @@ import java.sql.Connection; import javax.inject.Provider; +import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import com.querydsl.core.QueryFlag; import com.querydsl.core.QueryFlag.Position; import com.querydsl.core.QueryMetadata; @@ -37,7 +38,7 @@ import com.querydsl.sql.SQLQuery; * @see SQLQuery * @author tiwe */ -public abstract class AbstractPostgreSQLQuery> extends AbstractSQLQuery { +public abstract class AbstractPostgreSQLQuery> extends AbstractSQLQuery { public AbstractPostgreSQLQuery(Connection conn, Configuration configuration, QueryMetadata metadata) { super(conn, configuration, metadata); } @@ -51,6 +52,7 @@ public abstract class AbstractPostgreSQLQuery... paths) { StringBuilder builder = new StringBuilder(" of "); for (RelationalPath path : paths) { @@ -90,6 +94,7 @@ public abstract class AbstractPostgreSQLQuery... exprs) { return addFlag(Position.AFTER_SELECT, Expressions.template(Object.class, "distinct on({0}) ", diff --git a/querydsl-sql/src/main/java/com/querydsl/sql/teradata/AbstractTeradataQuery.java b/querydsl-sql/src/main/java/com/querydsl/sql/teradata/AbstractTeradataQuery.java index 80701df53..0ec2d3ff6 100644 --- a/querydsl-sql/src/main/java/com/querydsl/sql/teradata/AbstractTeradataQuery.java +++ b/querydsl-sql/src/main/java/com/querydsl/sql/teradata/AbstractTeradataQuery.java @@ -32,7 +32,7 @@ import com.querydsl.sql.TeradataTemplates; * * @author tiwe */ -public abstract class AbstractTeradataQuery> extends AbstractSQLQuery { +public abstract class AbstractTeradataQuery> extends AbstractSQLQuery { public AbstractTeradataQuery(Connection conn) { this(conn, new Configuration(TeradataTemplates.DEFAULT), new DefaultQueryMetadata()); }