Spring数据Neo4j:ConversionFailedException:无法将值从类型java.lang.String转换为类型byte
我尝试使用Spring数据Neo4j将图像存储为字节数组(字节[]),并具有以下模型属性: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
@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参考: