diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/ColumnName.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/ColumnName.java index e048fcdcc..008f4e2dd 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/ColumnName.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/ColumnName.java @@ -75,6 +75,11 @@ public abstract class ColumnName { */ public abstract Optional getCqlIdentifier(); + CqlIdentifier getRequiredCqlIdentifier() { + return getCqlIdentifier().or(() -> getColumnName().map(CqlIdentifier::fromCql)) + .orElseGet(() -> CqlIdentifier.fromCql(toCql())); + } + /** * Represent the column name as CQL. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java index 5826b810f..6e6582f6d 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java @@ -480,6 +480,10 @@ public class Columns implements Iterable { return new FunctionCall(expression, params, alias); } + FunctionCall as(ColumnName alias) { + return new FunctionCall(expression, params, alias.getRequiredCqlIdentifier()); + } + @Override public String getExpression() { return expression; @@ -625,7 +629,7 @@ public class Columns implements Iterable { @Override public Selector ttl() { - return FunctionCall.from("TTL", ColumnSelector.from(columnName)); + return FunctionCall.from("TTL", ColumnSelector.from(columnName)).as(columnName); } @Override @@ -657,7 +661,7 @@ public class Columns implements Iterable { @Override public Selector using(SimilarityFunction similarityFunction) { return FunctionCall.from("similarity_" + similarityFunction.name().toLowerCase(Locale.ROOT), columnName, - vector); + vector).as(columnName); } }; }