Skip to content

Commit 58ad60e

Browse files
authored
Require native queries to be executed from native expressions (#251)
Co-authored-by: Marvin Froeder <[email protected]>
1 parent 271b436 commit 58ad60e

File tree

7 files changed

+28
-15
lines changed

7 files changed

+28
-15
lines changed

querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractSQLTest.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import com.querydsl.jpa.domain.Cat;
1616
import com.querydsl.jpa.domain.Color;
1717
import com.querydsl.jpa.domain.QCat;
18-
import com.querydsl.jpa.domain.QCompany;
1918
import com.querydsl.jpa.domain.sql.SAnimal_;
19+
import com.querydsl.jpa.domain.sql.SCompany_;
2020
import java.sql.SQLException;
2121
import java.util.Arrays;
2222
import java.util.Collections;
@@ -111,8 +111,14 @@ public void entityQueries2() {
111111

112112
@Test
113113
public void entityQueries3() {
114-
QCat catEntity = new QCat("animal_");
115-
assertThat(query().from(catEntity).select(catEntity.toes.max()).fetchFirst().intValue())
114+
SAnimal_ catEntity = new SAnimal_("animal_");
115+
assertThat(
116+
query()
117+
.from(catEntity)
118+
.select(catEntity.toes.max())
119+
.where(catEntity.dtype.eq("C"))
120+
.fetchFirst()
121+
.intValue())
116122
.isEqualTo(0);
117123
}
118124

@@ -163,7 +169,7 @@ public void entityQueries6() {
163169

164170
@Test
165171
public void entityQueries7() {
166-
QCompany company = QCompany.company;
172+
SCompany_ company = SCompany_.company_;
167173
assertThat(query().from(company).select(company.officialName).fetch())
168174
.isEqualTo(Collections.emptyList());
169175
}

querydsl-jpa/src/test/java/com/querydsl/jpa/JPAQueryFactoryTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import com.querydsl.jpa.domain.QAnimal;
1919
import com.querydsl.jpa.impl.JPAQueryFactory;
20-
import com.querydsl.sql.SQLExpressions;
2120
import jakarta.persistence.EntityManager;
2221
import jakarta.persistence.EntityManagerFactory;
2322
import java.util.Date;
@@ -156,7 +155,7 @@ public void insert4() {
156155
.insert(QAnimal.animal)
157156
.columns(QAnimal.animal.id, QAnimal.animal.birthdate)
158157
.select(
159-
SQLExpressions.select(QAnimal.animal.id, QAnimal.animal.birthdate)
158+
JPAExpressions.select(QAnimal.animal.id, QAnimal.animal.birthdate)
160159
.from(QAnimal.animal));
161160
}
162161
}

querydsl-scala/src/main/scala/com/querydsl/scala/sql/SQL.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ trait SQL extends SQLHelpers {
4646

4747
def query() = new SQLQuery(connection, templates)
4848

49-
def from(expr: Expression[_]*) = query.from(expr:_*)
49+
def from(expr: RelationalPath[_]*) = query.from(expr:_*)
5050

5151
def insert(path: RelationalPath[_]) = new SQLInsertClause(connection, templates, path)
5252

querydsl-sql/src/main/java/com/querydsl/sql/AbstractSQLQueryFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ public final SQLDeleteClause delete(RelationalPath<?> path) {
5151

5252
@SuppressWarnings("unchecked")
5353
@Override
54-
public final Q from(Expression<?> from) {
54+
public final Q from(RelationalPath<?> from) {
5555
return (Q) query().from(from);
5656
}
5757

5858
@SuppressWarnings("unchecked")
5959
@Override
60-
public final Q from(Expression<?>... args) {
60+
public final Q from(RelationalPath<?>... args) {
6161
return (Q) query().from(args);
6262
}
6363

querydsl-sql/src/main/java/com/querydsl/sql/ProjectableSQLQuery.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,21 @@ public long fetchCount() {
150150
return ((Number) fetchOne()).longValue();
151151
}
152152

153-
public Q from(Expression<?> arg) {
153+
protected Q from(Expression<?> arg) {
154154
return queryMixin.from(arg);
155155
}
156156

157+
public Q from(RelationalPath<?> arg) {
158+
return queryMixin.from(arg);
159+
}
160+
161+
public Q from(RelationalPath<?> arg, Expression<?>... args) {
162+
queryMixin.from(arg);
163+
return queryMixin.from(args);
164+
}
165+
157166
@Override
158-
public Q from(Expression<?>... args) {
167+
public Q from(RelationalPath<?>... args) {
159168
return queryMixin.from(args);
160169
}
161170

querydsl-sql/src/main/java/com/querydsl/sql/SQLCommonQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public interface SQLCommonQuery<Q extends SQLCommonQuery<Q>> extends Query<Q> {
7878
* @param o from
7979
* @return the current object
8080
*/
81-
Q from(Expression<?>... o);
81+
Q from(RelationalPath<?>... o);
8282

8383
/**
8484
* Adds a sub query source

querydsl-sql/src/main/java/com/querydsl/sql/SQLCommonQueryFactory.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
package com.querydsl.sql;
1515

1616
import com.querydsl.core.QueryFactory;
17-
import com.querydsl.core.types.Expression;
1817
import com.querydsl.core.types.Path;
1918
import com.querydsl.core.types.SubQueryExpression;
2019
import com.querydsl.sql.dml.SQLDeleteClause;
@@ -57,15 +56,15 @@ public interface SQLCommonQueryFactory<
5756
* @param from query source
5857
* @return query
5958
*/
60-
Q from(Expression<?> from);
59+
Q from(RelationalPath<?> from);
6160

6261
/**
6362
* Create a new SELECT query
6463
*
6564
* @param from query sources
6665
* @return query
6766
*/
68-
Q from(Expression<?>... from);
67+
Q from(RelationalPath<?>... from);
6968

7069
/**
7170
* Create a new SELECT query

0 commit comments

Comments
 (0)