diff --git a/spring-cql/src/main/java/org/springframework/cassandra/core/cql/CqlStringUtils.java b/spring-cql/src/main/java/org/springframework/cassandra/core/cql/CqlStringUtils.java index 74faed84f..59670fce3 100644 --- a/spring-cql/src/main/java/org/springframework/cassandra/core/cql/CqlStringUtils.java +++ b/spring-cql/src/main/java/org/springframework/cassandra/core/cql/CqlStringUtils.java @@ -15,10 +15,6 @@ */ package org.springframework.cassandra.core.cql; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; - import com.datastax.driver.core.DataType; public class CqlStringUtils { @@ -30,8 +26,6 @@ public class CqlStringUtils { protected static final String EMPTY_STRING = ""; protected static final String TYPE_PARAMETER_PREFIX = "<"; protected static final String TYPE_PARAMETER_SUFFIX = ">"; - public static final String ISO8601_DATE_FORMAT_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; - public static final DateFormat ISO8601_DATE_FORMAT = new SimpleDateFormat(ISO8601_DATE_FORMAT_PATTERN); public static StringBuilder noNull(StringBuilder sb) { return sb == null ? new StringBuilder() : sb; @@ -134,12 +128,4 @@ public class CqlStringUtils { } return s.substring(1, s.length() - 1); } - - public static String date(Date date) { - return ISO8601_DATE_FORMAT.format(date); - } - - public static String date(long time) { - return ISO8601_DATE_FORMAT.format(new Date(time)); - } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQuery.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQuery.java index 5adfff90e..a5f4d3e81 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQuery.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQuery.java @@ -47,7 +47,7 @@ public class StringBasedCassandraQuery extends AbstractCassandraQuery { if (queryMethod.isStringLikeParameter(index)) { stringValue = "'" + CqlStringUtils.escapeSingle(value) + "'"; } else if (queryMethod.isDateParameter(index)) { - stringValue = "'" + CqlStringUtils.date((Date) value) + "'"; + stringValue = "" + ((Date) value).getTime(); } else { stringValue = value.toString(); } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/querymethods/datekey/DateKeyIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/querymethods/datekey/DateKeyIntegrationTests.java new file mode 100644 index 000000000..c3a800586 --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/querymethods/datekey/DateKeyIntegrationTests.java @@ -0,0 +1,48 @@ +package org.springframework.data.cassandra.test.integration.querymethods.datekey; + +import static org.junit.Assert.assertNotNull; + +import java.util.Date; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.cassandra.config.SchemaAction; +import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; +import org.springframework.data.cassandra.test.integration.support.AbstractSpringDataEmbeddedCassandraIntegrationTest; +import org.springframework.data.cassandra.test.integration.support.IntegrationTestConfig; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration +public class DateKeyIntegrationTests extends AbstractSpringDataEmbeddedCassandraIntegrationTest { + + @Configuration + @EnableCassandraRepositories(basePackageClasses = ThingRepo.class) + public static class Config extends IntegrationTestConfig { + @Override + public String[] getEntityBasePackages() { + return new String[] { Thing.class.getPackage().getName() }; + } + + @Override + public SchemaAction getSchemaAction() { + return SchemaAction.RECREATE_DROP_UNUSED; + } + } + + @Autowired + ThingRepo repo; + + @Test + public void testQueryWithDate() { + Date date = new Date(); + Thing saved = new Thing(date); + repo.save(saved); + + Thing found = repo.findThingByDate(date); + assertNotNull(found); + } +} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/querymethods/datekey/Thing.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/querymethods/datekey/Thing.java new file mode 100644 index 000000000..d55ac28ae --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/querymethods/datekey/Thing.java @@ -0,0 +1,31 @@ +package org.springframework.data.cassandra.test.integration.querymethods.datekey; + +import java.util.Date; + +import org.springframework.cassandra.core.PrimaryKeyType; +import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; +import org.springframework.data.cassandra.mapping.Table; +import org.springframework.util.Assert; + +@Table +public class Thing { + + @PrimaryKeyColumn(ordinal = 0, type = PrimaryKeyType.PARTITIONED) + private Date date; + + protected Thing() { + } + + public Thing(Date date) { + setDate(date); + } + + public Date getDate() { + return new Date(date.getTime()); + } + + public void setDate(Date date) { + Assert.notNull(date); + this.date = new Date(date.getTime()); + } +} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/querymethods/datekey/ThingRepo.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/querymethods/datekey/ThingRepo.java new file mode 100644 index 000000000..fa659d385 --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/querymethods/datekey/ThingRepo.java @@ -0,0 +1,12 @@ +package org.springframework.data.cassandra.test.integration.querymethods.datekey; + +import java.util.Date; + +import org.springframework.data.cassandra.repository.CassandraRepository; +import org.springframework.data.cassandra.repository.Query; + +public interface ThingRepo extends CassandraRepository { + + @Query("SELECT * from thing where date = ?0") + Thing findThingByDate(Date date); +}