diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/expression/BetweenPropertyExpression.java b/ebean-core/src/main/java/io/ebeaninternal/server/expression/BetweenPropertyExpression.java index fed80ff63..9ce453eb6 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/expression/BetweenPropertyExpression.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/expression/BetweenPropertyExpression.java @@ -81,7 +81,7 @@ final class BetweenPropertyExpression extends NonPrepareExpression { @Override public void addSql(SpiExpressionRequest request) { - request.append(" ?").append(BETWEEN).property(name(lowProperty)).append(" and ").property(name(highProperty)); + request.append("?").append(BETWEEN).property(name(lowProperty)).append(" and ").property(name(highProperty)); } @Override diff --git a/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java b/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java index 41db9684c..d2a8bedff 100644 --- a/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java +++ b/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java @@ -813,6 +813,30 @@ public class QCustomerTest { new QContact() .firstName.inRangeWith(lastName, "B") .findList(); + + new QContact() + .firstName.between("A", "B") + .findList(); + } + + @Test + void betweenProperties() { + var query = new QContact() + .firstName.betweenProperties(lastName, "B"); + + query.findList(); + assertThat(query.getGeneratedSql()).contains(" where ? between t0.first_name and t0.last_name"); + } + + @Test + void betweenProperties_notFirstPredicate() { + var query = new QContact() + .lastName.isNotNull() + .firstName.betweenProperties(lastName, "B") + .email.isNotNull(); + + query.findList(); + assertThat(query.getGeneratedSql()).contains(" where t0.last_name is not null and ? between t0.first_name and t0.last_name and t0.email is not null"); } @Test diff --git a/ebean-test/src/test/java/io/ebean/xtest/internal/server/grammer/EqlParserTest.java b/ebean-test/src/test/java/io/ebean/xtest/internal/server/grammer/EqlParserTest.java index 8053cefc1..16b64b7d9 100644 --- a/ebean-test/src/test/java/io/ebean/xtest/internal/server/grammer/EqlParserTest.java +++ b/ebean-test/src/test/java/io/ebean/xtest/internal/server/grammer/EqlParserTest.java @@ -409,7 +409,7 @@ class EqlParserTest extends BaseTestCase { Query query = parse("where 'x' between name and smallnote"); query.findList(); - assertSql(query).contains("where ? between t0.name and t0.smallnote"); + assertSql(query).contains("where ? between t0.name and t0.smallnote"); } @Test @@ -418,7 +418,7 @@ class EqlParserTest extends BaseTestCase { query.setParameter("some", "A"); query.findList(); - assertSql(query).contains("where ? between t0.name and t0.smallnote"); + assertSql(query).contains("where ? between t0.name and t0.smallnote"); } @Test