diff --git a/src/main/java/io/ebean/EbeanServer.java b/src/main/java/io/ebean/EbeanServer.java index 45421246e..11c6ff5cd 100644 --- a/src/main/java/io/ebean/EbeanServer.java +++ b/src/main/java/io/ebean/EbeanServer.java @@ -232,9 +232,9 @@ public interface EbeanServer { * * // Find order additionally fetching the customer, details and details.product name. * - * String eql = "fetch customer fetch details fetch details.product (name) where id = :orderId "; + * String ormQuery = "fetch customer fetch details fetch details.product (name) where id = :orderId "; * - * Query query = Ebean.createQuery(Order.class, eql); + * Query query = Ebean.createQuery(Order.class, ormQuery); * query.setParameter("orderId", 2); * * Order order = query.findUnique(); @@ -251,11 +251,11 @@ public interface EbeanServer { * } * * @param beanType The type of bean to fetch - * @param eql The Ebean query + * @param ormQuery The Ebean ORM query * @param The type of the entity bean * @return The query with expressions defined as per the parsed query statement */ - Query createQuery(Class beanType, String eql); + Query createQuery(Class beanType, String ormQuery); /** * Create a query for a type of entity bean. diff --git a/src/main/java/io/ebean/Finder.java b/src/main/java/io/ebean/Finder.java index 64255d507..5efe0d50e 100644 --- a/src/main/java/io/ebean/Finder.java +++ b/src/main/java/io/ebean/Finder.java @@ -163,4 +163,11 @@ public class Finder { public Query nativeSql(String nativeSql) { return db().findNative(type, nativeSql); } + + /** + * Creates a query using the ORM query language. + */ + public Query query(String ormQuery) { + return db().createQuery(type, ormQuery); + } } diff --git a/src/test/java/org/tests/model/basic/finder/CustomerFinder.java b/src/test/java/org/tests/model/basic/finder/CustomerFinder.java index 6a326e278..83fede749 100644 --- a/src/test/java/org/tests/model/basic/finder/CustomerFinder.java +++ b/src/test/java/org/tests/model/basic/finder/CustomerFinder.java @@ -28,6 +28,14 @@ public class CustomerFinder extends Finder { return query().where().eq("name", name).findUnique(); } + public List byNameStatus(String nameStartsWith, Customer.Status status) { + + return query("where status = :status and name istartsWith :name order by name") + .setParameter("status", status) + .setParameter("name", nameStartsWith) + .findList(); + } + public List namesStartingWith(String name) { return nativeSql("select name from o_customer where name like ? order by name") diff --git a/src/test/java/org/tests/query/finder/TestCustomerFinder.java b/src/test/java/org/tests/query/finder/TestCustomerFinder.java index 38d0e4b41..6cfecf289 100644 --- a/src/test/java/org/tests/query/finder/TestCustomerFinder.java +++ b/src/test/java/org/tests/query/finder/TestCustomerFinder.java @@ -62,6 +62,17 @@ public class TestCustomerFinder extends BaseTestCase { assertThat(notThere).isNull(); } + @Test + public void test_ormQuery() { + + ResetBasicData.reset(); + + List customers = + Customer.find.byNameStatus("R", Customer.Status.NEW); + + assertThat(customers).isNotNull(); + } + @Test public void test_nativeSingleAttribute() {