I am setting up a small project with spring boot using spring-data-cassandra
.
I realized that my test breaks when I have joda time Datetime on a @Table object. Stack shows error like this:
Caused by: org.springframework.data.cassandra.mapping.VerifierMappingExceptions: org.joda.time.Chronology: Cassandra entities must have the @Table, @Persistent or @PrimaryKeyClass Annotation
My configuration is below:
@Configuration
@EnableCassandraRepositories(basePackages ="com.myproject.cassandra.repository")
@ComponentScan(basePackages = "com.myproject.cassandra")
@EnableAutoConfiguration
class CassandraConfiguration {
private static ConfigContext confitConfig = ConfigContext.lookup();
//private static AdminContext confitAdmin = AdminContext.lookup();
DataSource cassandraDataSource
static {
confitConfig.register(DataSource.class);
}
Collection<DataSource> dataSources = confitConfig.list(DataSource.class)
CassandraConfiguration() {
cassandraDataSource = new DataSource();
dataSources.each { d -> d.name == "Cassandra"
cassandraDataSource = d
}
}
@Bean
public CassandraClusterFactoryBean cluster(){
CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean()
cluster.setContactPoints(cassandraDataSource.host)
cluster.setPort(cassandraDataSource.port)
return cluster
}
@Bean
public CassandraMappingContext mappingContext() {
return new BasicCassandraMappingContext()
}
@Bean
public CassandraConverter converter(){
return new MappingCassandraConverter(mappingContext())
}
@Bean
public CassandraSessionFactoryBean session() throws Exception {
CassandraSessionFactoryBean session= new CassandraSessionFactoryBean()
session.setCluster(cluster().getObject())
session.setConverter(converter())
session.setKeyspaceName(cassandraDataSource.database)
session.setSchemaAction(SchemaAction.NONE)
return session;
}
@Bean
public CassandraOperations cassandraTemplate() throws Exception {
return new CassandraTemplate(session().getObject())
}
}
Could it happen because I am using BasicCassandraMappingContext
? How to fix this?