diff --git a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java index e5c98830d..fef422fc3 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java @@ -23,7 +23,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; -import java.util.Set; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -63,10 +62,10 @@ public class JpaQueryCreator extends AbstractQueryCreator typeToRead = type.getTypeToRead(); - return (typeToRead == null || tree.isExistsProjection()) ? builder.createTupleQuery() : builder.createQuery(typeToRead); + return typeToRead == null || tree.isExistsProjection() ? builder.createTupleQuery() + : builder.createQuery(typeToRead); } /** @@ -169,24 +169,26 @@ public class JpaQueryCreator extends AbstractQueryCreator id = root.getModel().getId(root.getModel().getIdType().getJavaType()); query = query.multiselect(root.get((SingularAttribute) id).alias(id.getName())); + } else { List> selections = new ArrayList>(); - Set> idClassAttributes = (Set>) root.getModel().getIdClassAttributes(); - - for (SingularAttribute attribute : idClassAttributes) { + for (SingularAttribute attribute : root.getModel().getIdClassAttributes()) { selections.add(root.get((SingularAttribute) attribute).alias(attribute.getName())); } + selections.add(root.get((SingularAttribute) id).alias(id.getName())); query = query.multiselect(selections); } + } else { query = query.select((Root) root); }