diff --git a/spring-cql/src/test/resources/logback.xml b/spring-cql/src/test/resources/logback.xml
index bcd2ae87e..77ebbd2af 100644
--- a/spring-cql/src/test/resources/logback.xml
+++ b/spring-cql/src/test/resources/logback.xml
@@ -9,6 +9,8 @@
+
+
diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/MappingCassandraConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/MappingCassandraConverter.java
index ae9968dc7..d4a64933c 100644
--- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/MappingCassandraConverter.java
+++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/MappingCassandraConverter.java
@@ -358,7 +358,13 @@ public class MappingCassandraConverter extends AbstractCassandraConverter
if (id instanceof MapId) {
for (Map.Entry entry : ((MapId) id).entrySet()) {
- where.and(QueryBuilder.eq(entry.getKey(), entry.getValue()));
+
+ CassandraPersistentProperty persistentProperty = entity.getPersistentProperty(entry.getKey());
+ if (persistentProperty != null) {
+ where.and(QueryBuilder.eq(persistentProperty.getColumnName().toCql(), entry.getValue()));
+ } else {
+ where.and(QueryBuilder.eq(entry.getKey(), entry.getValue()));
+ }
}
return;
}
diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/convert/MappingCassandraConverterUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/convert/MappingCassandraConverterUnitTests.java
index a17d0fa51..cfdb577ee 100644
--- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/convert/MappingCassandraConverterUnitTests.java
+++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/convert/MappingCassandraConverterUnitTests.java
@@ -33,11 +33,13 @@ import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
-import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.UUID;
@@ -52,6 +54,7 @@ import org.springframework.cassandra.core.PrimaryKeyType;
import org.springframework.core.SpringVersion;
import org.springframework.core.convert.ConverterNotFoundException;
import org.springframework.data.cassandra.RowMockUtil;
+import org.springframework.data.cassandra.domain.UserToken;
import org.springframework.data.cassandra.mapping.BasicCassandraMappingContext;
import org.springframework.data.cassandra.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.mapping.CassandraType;
@@ -69,6 +72,7 @@ import com.datastax.driver.core.Row;
import com.datastax.driver.core.querybuilder.Assignment;
import com.datastax.driver.core.querybuilder.BuiltStatement;
import com.datastax.driver.core.querybuilder.Clause;
+import com.datastax.driver.core.querybuilder.Delete;
import com.datastax.driver.core.querybuilder.Delete.Where;
import com.datastax.driver.core.querybuilder.Insert;
import com.datastax.driver.core.querybuilder.QueryBuilder;
@@ -742,6 +746,45 @@ public class MappingCassandraConverterUnitTests {
assertThat(getAssignmentValues(update), contains((Object) LocalDate.fromYearMonthDay(2010, 7, 4)));
}
+ /**
+ * @see DATACASS-206
+ */
+ @Test
+ public void updateShouldUseSpecifiedColumnNames() {
+
+ UserToken userToken = new UserToken();
+ userToken.setUserId(UUID.randomUUID());
+ userToken.setToken(UUID.randomUUID());
+ userToken.setAdminComment("admin comment");
+ userToken.setUserComment("user comment");
+
+ Update update = QueryBuilder.update("table");
+ mappingCassandraConverter.write(userToken, update);
+
+ assertThat(getAssignments(update), hasEntry("admincomment", (Object) "admin comment"));
+ assertThat(getAssignments(update), hasEntry("user_comment", (Object) "user comment"));
+
+ assertThat(getWherePredicates(update), hasEntry("user_id", (Object) userToken.getUserId()));
+ }
+
+ /**
+ * @see DATACASS-206
+ */
+ @Test
+ public void deleteShouldUseSpecifiedColumnNames() {
+
+ UserToken userToken = new UserToken();
+ userToken.setUserId(UUID.randomUUID());
+ userToken.setToken(UUID.randomUUID());
+ userToken.setAdminComment("admin comment");
+ userToken.setUserComment("user comment");
+
+ Delete delete = QueryBuilder.delete().from("table");
+ mappingCassandraConverter.write(userToken, delete.where());
+
+ assertThat(getWherePredicates(delete), hasEntry("user_id", (Object) userToken.getUserId()));
+ }
+
@SuppressWarnings("unchecked")
private List getListValue(Insert statement) {
List