我有内在价值的枚举:
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 - 转换器永远不会被使用。 我怎么处理它? 谢谢。