2 回答
TA贡献1810条经验 获得超5个赞
看看AttributeConverter注释,但是如果您需要关系上的值集合,请考虑重构您的模型,使其成为具有相关内容的节点。
例子:
这是一个示例属性转换器(在 Kotlin 中),它在 Neo4j 中将字符串数组属性转换为/从字符串数组属性转换为 Java 类型。
class RoleArrayAttributeConverter : AttributeConverter<Array<Role>, Array<String>>
{
override fun toEntityAttribute(value: Array<String>): Array<Role>
{
return value.map { Role.valueOf(it) }.toTypedArray()
}
override fun toGraphProperty(value: Array<Role>): Array<String>
{
return value.map { it.toString() }.toTypedArray()
}
}
TA贡献1827条经验 获得超8个赞
根据@Jasper Blues 的建议,我用 Java 创建了自己的转换器。回答我自己的问题,因为我无法在评论中添加这个。
public class ChildConverter implements AttributeConverter<Set<Child>, String> {
ObjectMapper mapper = new ObjectMapper();
@Override
public String toGraphProperty(Set<Child> data) {
String value = "";
try {
value = mapper.writeValueAsString(data);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return value;
}
@Override
public Set<Child> toEntityAttribute(String data) {
Set<Child> mapValue = new HashSet<Child>();
TypeReference<Set<Child>> typeRef = new TypeReference<Set<Child>>() {
};
try {
mapValue = mapper.readValue(data, typeRef);
} catch (IOException e) {
e.printStackTrace();
}
return mapValue;
}
}
确保在父类中添加@Convert 注解。
@Convert(converter = ChildConverter.class)
Set<Child> = new HashSet<>();
添加回答
举报