我希望能够存储一组完全限定的类名作为Node的属性。鉴于此节点:
@NodeEntity
public TestNode {
Set<Class<?>> classSet;
//getters and setters here
}
以下自定义转换器:
public class ClassToStringConverter implements Converter<Class<?>, String> {
@Override
public String convert(final Class<?> source) {
return source.getName();
}
}
public class StringToClassConverter implements Converter<String, Class<?>> {
@Override
public String convert(final String source) {
Class<?> returnVal = null;
try {
returnVal = Class.forName(source);
} catch (ClassNotFoundException e) { }
return returnVal;
}
}
我使用Spring上下文注册转换器:
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="my.package.ClassToStringConverter"/>
<bean class="my.package.StringToClassConverter "/>
</set>
</property>
</bean>
然后使用我的存储库,我可以正确保存和检索节点,并使用我的自定义转换器按预期存储完全限定的类名。但是,我希望能够在我的存储库中按类名查询:
@Query("MATCH (m:TestNode) where {0} in m.classSet return m;")
public findByClassInClassSet(Class<?> clazz);
但是,这似乎使用Class.toString()转换Class而不是使用我的Converter。所以它正在搜索String&#34;类my.package.TestNode&#34;而不是转换器正确存储为&#34; my.package.TestNode&#34;。
我在这里错过了什么或做错了吗?如果我不能使用Class类型进行查询,那么如何从这些转换器中受益?
注意:请原谅任何拼写错误 - 此代码在断开连接的网络上,因此我无法复制粘贴。如果有任何拼写错误,我向您保证这不是我实际代码中的问题。
答案 0 :(得分:0)
应在派生查找器的下一个里程碑版本中修复。
对于带注释的查询方法,SDN无法知道您所引用的参数,因此无法将其转换为。