Skip to content

Commit ef495d9

Browse files
committed
Intercept instantiate failure to add exception message.
Fix generation of projecting queries to avoid selecting the same property twice. Optimize types outside of loop in find queries. Avoid creating extra stream when executing queries.
1 parent 60a1033 commit ef495d9

File tree

3 files changed

+14
-13
lines changed

3 files changed

+14
-13
lines changed

src/main/java/com/oracle/nosql/spring/data/core/NosqlTemplate.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -806,16 +806,17 @@ public <S, T> Iterable<T> find(
806806
Class<T> targetType,
807807
NosqlQuery query) {
808808

809+
Class entityType = entityInformation.getJavaType();
810+
Class<?> typeToRead = targetType.isInterface() ||
811+
targetType.isAssignableFrom(entityType)
812+
? entityType
813+
: targetType;
814+
809815
Iterable<MapValue> results = executeMapValueQuery(entityInformation,
810816
query);
811817

812818
Stream<T> resStream = IterableUtil.getStreamFromIterable(results)
813819
.map(d -> {
814-
Class entityType = entityInformation.getJavaType();
815-
Class<?> typeToRead = targetType.isInterface() ||
816-
targetType.isAssignableFrom(entityType)
817-
? entityType
818-
: targetType;
819820
Object source = getConverter().read(typeToRead, d);
820821
T result = targetType.isInterface()
821822
? projectionFactory.createProjection(targetType, source)
@@ -865,12 +866,7 @@ private <T> Iterable<MapValue> executeMapValueQuery(
865866

866867
log.debug("Q: {}", sql);
867868
// System.out.println("Q: " + sql);
868-
Iterable<MapValue> results = doQuery(qReq);
869-
870-
Stream<MapValue> resStream =
871-
IterableUtil.getStreamFromIterable(results);
872-
873-
return IterableUtil.getIterableFromStream(resStream);
869+
return doQuery(qReq);
874870
}
875871

876872
private PreparedStatement getPreparedStatement(

src/main/java/com/oracle/nosql/spring/data/core/convert/MappingNosqlConverter.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,12 @@ public <T> T getParameterValue(
734734
return convertFieldValueToObject( value, prop);
735735
}
736736
};
737-
return instantiator.createInstance(entity, paramProvider);
737+
try {
738+
return instantiator.createInstance(entity, paramProvider);
739+
} catch (RuntimeException e) {
740+
throw new RuntimeException("Failed to instantiate entity type: " +
741+
entity.getType() + ". Check available public constructors.", e);
742+
}
738743
}
739744

740745
private <E> void setPojoProperties(NosqlPersistentEntity<E> entity,

src/main/java/com/oracle/nosql/spring/data/core/query/CriteriaQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ private String generateProjection(String idPropertyName) {
458458
return "*";
459459
}
460460

461-
List<String> inputProperties = returnedType.getInputProperties();
461+
List<String> inputProperties = new ArrayList<>();
462462

463463
final NosqlPersistentEntity<?> entity = (NosqlPersistentEntity<?>)
464464
mappingContext.getPersistentEntity(returnedType.getReturnedType());

0 commit comments

Comments
 (0)