Spring数据Neo4j:ConversionFailedException:无法将值从类型java.lang.String转换为类型byte

Spring数据Neo4j:ConversionFailedException:无法将值从类型java.lang.String转换为类型byte,java,spring,spring-data-neo4j,Java,Spring,Spring Data Neo4j,我尝试使用Spring数据Neo4j将图像存储为字节数组(字节[]),并具有以下模型属性: @GraphProperty(propertyType = byte[].class) private byte[] profileImage; 保存和读取不起作用: modelRepository.save(myObject) myModel = modelRepository.findByNodeId(nodeId) 我收到以下转换例外情况: Caused by: org.springframew

我尝试使用Spring数据Neo4j将图像存储为字节数组(字节[]),并具有以下模型属性:

@GraphProperty(propertyType = byte[].class)
private byte[] profileImage;
保存和读取不起作用:

modelRepository.save(myObject)
myModel = modelRepository.findByNodeId(nodeId)
我收到以下转换例外情况:

Caused by: org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type byte for value ...
at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:41) ~[spring-core-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:174) ~[spring-core-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.core.convert.support.StringToArrayConverter.convert(StringToArrayConverter.java:63) ~[spring-core-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:35) ~[spring-core-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:174) ~[spring-core-4.0.7.RELEASE.jar:4.0.7.RELEASE]
Caused by: java.lang.NumberFormatException: For input string: ...
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.7.0_75]
at java.lang.Integer.parseInt(Integer.java:492) ~[na:1.7.0_75]
at java.lang.Byte.parseByte(Byte.java:148) ~[na:1.7.0_75]
at java.lang.Byte.valueOf(Byte.java:204) ~[na:1.7.0_75]
at java.lang.Byte.valueOf(Byte.java:230) ~[na:1.7.0_75]
似乎在某种程度上,字节[]在内部首先转换为字符串,然后再转换回字节[]

我不太明白那里到底发生了什么

作为一个连接类,我在Spring应用程序配置xml文件中使用这个类:

org.springframework.data.neo4j.rest.SpringRestGraphDatabase
你有什么线索吗


感谢您的帮助。

经过一些调查,我可以通过提供自定义转换器来解决此问题:

public class StringBase64ToByteArrayConverter implements Converter<String, byte[]> {

    @Override
    public byte[] convert(String source) {
        return Base64.decodeBase64(source);
    }
}
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="my.converter.StringBase64ToByteArrayConverter"/>
        </set>
    </property>
</bean>
公共类StringBase64ToByteArrayConverter实现转换器{
@凌驾
公共字节[]转换(字符串源){
返回Base64.decodeBase64(源);
}
}
并在此转换器中注册ConversionService:

public class StringBase64ToByteArrayConverter implements Converter<String, byte[]> {

    @Override
    public byte[] convert(String source) {
        return Base64.decodeBase64(source);
    }
}
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="my.converter.StringBase64ToByteArrayConverter"/>
        </set>
    </property>
</bean>

另请参见Spring参考: