Skip to content

Commit 57463d7

Browse files
committed
Add failing test with multiple joins and InlineQuery
1 parent 04aacd8 commit 57463d7

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/SelectRendererUnitTests.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,38 @@ void shouldRenderJoinWithInlineQuery() {
232232
+ "ON one.department_id = department.id");
233233
}
234234

235+
@Test // GH-1362
236+
void shouldRenderJoinWithInlineQueryAndWhereClause() {
237+
Table merchantCustomers = Table.create("merchants_customers");
238+
Table customerDetails = Table.create("customer_details");
239+
BindMarker merchantIdMarker = SQL.bindMarker(":merchantId");
240+
241+
Select innerSelect = Select.builder()
242+
.select(customerDetails.column("user_id").as("user_id"), customerDetails.column("user_id").as("name"))
243+
.from(customerDetails).join(merchantCustomers)
244+
.on(merchantCustomers.column("user_id").isEqualTo(customerDetails.column("user_id"))).where(
245+
customerDetails.column("user_id").isEqualTo(merchantCustomers.column("user_id"))
246+
.and(merchantCustomers.column("merchant_id").isEqualTo(merchantIdMarker))).build();
247+
248+
InlineQuery innerTable = InlineQuery.create(innerSelect, "inner");
249+
250+
Select select = Select.builder().select(merchantCustomers.asterisk()) //
251+
.from(merchantCustomers) //
252+
.join(innerTable).on(innerTable.column("user_id").isEqualTo(merchantCustomers.column("user_id"))) //
253+
.build();
254+
255+
String sql = SqlRenderer.toString(select);
256+
257+
assertThat(sql).isEqualTo("SELECT merchants_customers.* FROM merchants_customers " + //
258+
"JOIN (" + //
259+
"SELECT customer_details.user_id AS user_id, customer_details.user_id AS name " + //
260+
"FROM customer_details " + //
261+
"JOIN merchants_customers ON merchants_customers.user_id = customer_details.user_id " + //
262+
"WHERE customer_details.user_id = merchants_customers.user_id AND merchants_customers.merchant_id = :merchantId" + //
263+
") inner " + //
264+
"ON inner.user_id = merchants_customers.user_id");
265+
}
266+
235267
@Test // GH-1003
236268
void shouldRenderJoinWithTwoInlineQueries() {
237269

0 commit comments

Comments
 (0)