From cebac8040f66564b3ac0e73390ab97a025384b33 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Thu, 23 Sep 2021 17:20:59 +1200 Subject: [PATCH] #2391 - MySql specific NPE because the return value of "java.sql.ResultSetMetaData.getTableName(int)" is null --- .../io/ebeaninternal/server/query/CQueryBuilder.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java index 7d338a915..8d4ebbdd9 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java @@ -408,9 +408,9 @@ final class CQueryBuilder { int cols = 1 + metaData.getColumnCount(); List propertyNames = new ArrayList<>(cols - 1); for (int i = 1; i < cols; i++) { - String schemaName = metaData.getSchemaName(i).toLowerCase(); - String tableName = metaData.getTableName(i).toLowerCase(); - String columnName = metaData.getColumnName(i).toLowerCase(); + String schemaName = lower(metaData.getSchemaName(i)); + String tableName = lower(metaData.getTableName(i)); + String columnName = lower(metaData.getColumnName(i)); String path = desc.findBeanPath(schemaName, tableName, columnName); if (path != null) { propertyNames.add(path); @@ -426,6 +426,10 @@ final class CQueryBuilder { } } + private String lower(String value) { + return value == null ? "" : value.toLowerCase(); + } + private SqlTree createRawSqlSqlTree(OrmQueryRequest request, CQueryPredicates predicates) { BeanDescriptor descriptor = request.descriptor(); ColumnMapping columnMapping = request.query().getRawSql().getColumnMapping();