From 54534ea7f365b1418a761f01a104e149cb04d963 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Thu, 21 Mar 2019 22:30:27 +1300 Subject: [PATCH] #1657 - ERROR BeanDescriptorManager - Error in deployment java.lang.RuntimeException: Expecting [ ... ] to start with "select" --- .../server/deploy/BeanDescriptorManager.java | 8 +++++++- .../java/org/tests/rawsql/TestRawSqlOrmQuery.java | 14 +++++++++++++- .../resources/ebean-xml-mappings/OrderMapping.xml | 11 +++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java b/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java index 359da02de..d00728013 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java +++ b/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java @@ -433,7 +433,13 @@ public class BeanDescriptorManager implements BeanDescriptorMap { } else { for (XmRawSql sql : entityDeploy.getRawSql()) { - RawSqlBuilder builder = RawSqlBuilder.parse(sql.getQuery().getValue()); + RawSqlBuilder builder; + try { + builder = RawSqlBuilder.parse(sql.getQuery().getValue()); + } catch (RuntimeException e) { + builder = RawSqlBuilder.unparsed(sql.getQuery().getValue()); + } + for (XmColumnMapping columnMapping : sql.getColumnMapping()) { builder.columnMapping(columnMapping.getColumn(), columnMapping.getProperty()); } diff --git a/src/test/java/org/tests/rawsql/TestRawSqlOrmQuery.java b/src/test/java/org/tests/rawsql/TestRawSqlOrmQuery.java index 306ef26ac..54e933d3c 100644 --- a/src/test/java/org/tests/rawsql/TestRawSqlOrmQuery.java +++ b/src/test/java/org/tests/rawsql/TestRawSqlOrmQuery.java @@ -10,7 +10,6 @@ import io.ebean.RawSql; import io.ebean.RawSqlBuilder; import io.ebean.annotation.IgnorePlatform; import io.ebean.annotation.Platform; - import org.ebeantest.LoggedSqlCollector; import org.junit.Assert; import org.junit.Test; @@ -77,6 +76,19 @@ public class TestRawSqlOrmQuery extends BaseTestCase { assertThat(sql).contains("where o.status = ? order by c.name, c.id"); } + @IgnorePlatform(Platform.ORACLE) + @Test + public void testNamed_fromCustomXmlLocations_withComments() { + + ResetBasicData.reset(); + + Query query = Ebean.createNamedQuery(Order.class, "myRawTest3"); + query.setMaxRows(10); + + List list = query.findList(); + assertThat(list).isNotEmpty(); + } + @Test public void test() { diff --git a/src/test/resources/ebean-xml-mappings/OrderMapping.xml b/src/test/resources/ebean-xml-mappings/OrderMapping.xml index cd35e81a9..59e8ddc52 100644 --- a/src/test/resources/ebean-xml-mappings/OrderMapping.xml +++ b/src/test/resources/ebean-xml-mappings/OrderMapping.xml @@ -14,6 +14,17 @@ order by c.name, c.id + + + + + + -- must be unparsed raw sql + select o.id, o.status + from o_order o + + +