枚举内部字段作为Spring Data @Query语句的参数

时间:2018-01-24 17:04:38

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

我有内在价值的枚举:

public enum Test {
    A("a");

    private String value;
    Test(String value) {
         this.value = value;
    }

    @Override
    public String toString() {
         return this.value;
    }
}

我将它用作Spring Data Cassandra @Query中的参数。 我还添加了读写转换器,仅用于解析“a” - > A和后面。 我被期望如果我发送A作为参数,查询将由转换器生成。但查询就像“... my_enum ='A'”而不是'a'。

我正在尝试调试spring源代码,发现这部分代码org / springframework / data / spring-data-cassandra / 1.5.9.RELEASE / spring-data-cassandra-1.5.9.RELEASE-sources.jar! /org/springframework/data/cassandra/convert/MappingCassandraConverter.java:799:

    // Cassandra has no default enum handling - convert it either to string
    // or - if requested - to a different type
    if (Enum.class.isAssignableFrom(value.getClass())) {
        if (requestedTargetType != null && !requestedTargetType.isEnum()
                && getConversionService().canConvert(value.getClass(), requestedTargetType)) {

            return getConversionService().convert(value, requestedTargetType);
        }

        return ((Enum<?>) value).name();
    }

看起来如果参数是enum - 转换器永远不会被使用。 我怎么处理它? 谢谢。

0 个答案:

没有答案