我见过Cassandra entities must have the @Table, @Persistent or @PrimaryKeyClass Annotation和Build breaks when using cassandra entity with jodatime object但我没有找到答案 .
我在spring boot应用程序上使用spring数据cassandra 1.4.5.RELEASE . 我正在尝试将“复杂类型”作为JSON字符串存储到cassandra中 .
这是创建我的表“test”的CQL:
CREATE TABLE test (
id uuid PRIMARY KEY,
co text
}
这是我的实体:
import com.datastax.driver.core.DataType;
import org.springframework.data.cassandra.mapping.CassandraType;
import org.springframework.data.cassandra.mapping.Column;
import org.springframework.data.cassandra.mapping.PrimaryKey;
import org.springframework.data.cassandra.mapping.Table;
import java.util.UUID;
@Table("test")
public class Test {
@PrimaryKey("id")
private UUID id;
@Column("co")
private ComplexObject co;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
@CassandraType(type = DataType.Name.TEXT)
public ComplexObject getCo() {
return co;
}
public void setCo(ComplexObject co) {
this.co = co;
}
}
这是我的“复杂对象”:
public class ComplexObject {
private String value1;
private String value2;
public String getValue1() {
return value1;
}
public void setValue1(String value1) {
this.value1 = value1;
}
public String getValue2() {
return value2;
}
public void setValue2(String value2) {
this.value2 = value2;
}
}
这是我的存储库:
import org.springframework.data.repository.CrudRepository;
import java.util.UUID;
public interface TestRepository extends CrudRepository<Test, UUID> {
}
当我启动我的应用程序时,我收到以下错误:
引起:org.springframework.data.cassandra.mapping.VerifierMappingExceptions:ComplexObject:Cassandra实体必须具有@ Table,@ Persistent或@PrimaryKeyClass注释
我想要的是我的“复杂对象”存储在文本列“co”中与其JSON表示 . 我知道Spring Data Cassandra不支持UDT,但我只是要求它存储为“text” .
我已经设法在"text"列中存储了Map>,其中包含@ReadingConverter,@ EditConverter和自定义MappingCassandraConverter来修复问题https://jira.spring.io/browse/DATACASS-349
我想做一些非常相似的事情,但问题不在于转换器 . 不知何故,Spring Data Cassandra似乎相信我的“ComplexType”是一个Cassandra实体,而不是......
难道我做错了什么 ?