【问题标题】:spring-data-cassandra unable to convert enumspring-data-cassandra 无法转换枚举
【发布时间】:2015-11-04 22:07:04
【问题描述】:

我正在尝试让 spring-data 将我的枚举类型转换为 cassandra 中的 int 字段,但出现以下异常:

Unexpected runtime exception java.lang.IllegalArgumentException: 
Value 2 of type class com.twc.atg.td.dbo.client.ClassCode does not correspond to any CQL3 type   

这是我正在使用的一段代码:

@Enumerated(EnumType.ORDINAL)
@Column("class_code")
public ClassCode classCode;

【问题讨论】:

  • 哪个类抛出了这个异常?您能否在堆栈跟踪中添加更多详细信息。
  • 你找到解决办法了吗?
  • 有什么解决办法吗?遇到同样的问题
  • 一个快速的答案 - 似乎 spring-data-cassandra 不支持它。 @Enumerated 注解相关的逻辑在com.datastax.driver.mapping中实现,但是错误来自org.springframework.data.cassandra.mapping。
  • 说多了,包org.springframework.data.cassandra.mapping根本不被spring-data-cassandra使用。所以这里有两个选择 - 忘记这个功能,或者不要使用 spring-data-cassandra 项目:)

标签: java spring cassandra spring-data spring-data-cassandra


【解决方案1】:

由于spring-data-cassandra不支持,所以可以在getter/setter中实现这个逻辑。

@Table
public class Writer {
    ...
    public enum WriterType {
        POET, DETECTIVE, JOUNALIST
    }

    ...
    @Column(value = "writer_type")
    private Integer writerType;

    ...
    public WriterType getWriterType() {
        return WriterType.values()[writerType];
    }

    public void setWriterType(WriterType writerType) {
        this.writerType = writerType.ordinal();
    }

【讨论】:

    猜你喜欢
    • 2016-12-29
    • 2017-08-05
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多