Spring数据Map键枚举类型在运行时无效

时间:2018-02-25 18:44:59

标签: java spring cassandra

我正在使用下一个堆栈:Spring Boot,Spring Data Cassandra,Kotlin

所以我有一些枚举:

enum class SomeEnum() { VALUE }

使用它作为Map键的类:

data class MyClass() {
  @Column("value")
  value: Map<SomeEnum, String>
}

我也注册了自定义编解码器:

@Override
protected ClusterBuilderConfigurer getClusterBuilderConfigurer() {
    return clusterBuilder -> {

        clusterBuilder.getConfiguration().getCodecRegistry()
            .register(new EnumNameCodec<>(SomeEnum.class));

        return clusterBuilder;
    };
}

在Cassandra中,这是map [varchar,varchar]。

事情是:我可以成功写出值。我可以毫无错误地阅读它。 但是在运行时我有键类型String而不是SomeEnum。 所以不幸的是,直接地图功能不起作用:

myClass.getValue().get(SomeEnum.VALUE)

将始终返回null。

相同的故事,但List类型工作正常,并在运行时有枚举。

使用POJO而不是Kotlin类可以得到相同的结果。

请帮忙。提前谢谢。

0 个答案:

没有答案