Spring 数据 Neo4j 4 和动态属性

Spring Data Neo4j 4 and dynamic properties

在我的 Neo4j/SDN 4 项目中,我有以下实体:

@NodeEntity
public class Value extends BaseEntity {

    @Index(unique = false)
    private Object value;

    private String description;

...

}

在应用程序 运行 期间,我希望能够向 Value 节点添加新的动态属性,例如 value_en_USvalue_fr_FR

现在我不知道在应用程序 运行 期间将哪些确切的属性添加到特定的 Value 节点,所以我无法在代码中将这些属性定义为单独的Value.

中的字段

在 SDN 4 中是否有任何机制可以在应用 运行 期间定义这些属性?我需要类似于来自 SDN 3 的 DynamicProperties 的东西。

SDN 4 中没有此类功能,但将通过 Map 上的 @Properties 注释添加到 SDN 5 中。

很快就会在快照版本中进行测试。 查看 this commit 了解更多详情

您可能还想查看对类似问题的回复。

请注意,在那个回答函数中:

public void addAllFields(Class<?> type) {
    for (Field field : type.getDeclaredFields()) {
        blacklist.add(field.getName());
    }
    if (type.getSuperclass() != null) {
        addAllFields(type.getSuperclass());
    }
}

不是防弹的。一方面,它不查看 @属性 注释。所以如果你想沿着这条路走下去,请睁大眼睛。

一个'improvement'是

public void addAllFields(Class<?> type) {
    for (Field field : type.getDeclaredFields()) {
        blacklist.add(findName(field));
    }
    if (type.getSuperclass() != null) {
        addAllFields(type.getSuperclass());
    }
}

private String findName(Field field) {
    Property property = field.getAnnotation(Property.class);
    if(property == null || "".equals(property.name())) {
        return field.getName();
    } else {
        return property.name();
    }
}

但这显然不是寻找方法上的注释...