2017-05-23 6 views
1

春データのNeo4j 4および動的特性

@NodeEntity 
public class Value extends BaseEntity { 

    @Index(unique = false) 
    private Object value; 

    private String description; 

... 

} 

私はValueノードに新しい動的プロパティを追加できるようにしたいアプリケーションの実行時に例えば、value_en_US,value_fr_FRのようなものである。

アプリケーションランタイム中に特定のValueノードに正確なプロパティーが追加されるかどうかわからないので、これらのプロパティーを別のフィールドとしてValueに定義することはできません。

SDN 4には、アプリケーションの実行時にこれらのプロパティを定義するメカニズムがありますか? SDN 3のDynamicPropertiesに似たものが必要です。

答えて

3

SDN 4にはこのような機能はありませんが、Map@Properties注釈でSDN 5に追加されます。

すぐにスナップショット版でテストすることができます。 詳細はthis commitをご覧ください。

+0

感謝を探していません。私はOGM3/SDN5へのアプリケーションの移植を楽しみにしています。 – alexanoid

1

また、このような質問に対する回答を見ることもできます。

https://stackoverflow.com/a/42632709/5249743

ちょうどその内の関数に答えることを注意してください:

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

は防弾ではありません。一つは、@Propertyアノテーションを見ないということです。だから、そのルートを下って行きたい場合は、目を開いてください。

アン「改善」は

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(); 
    } 
} 

である。しかし、これは明らかな方法で注釈...あなたの答えのための

関連する問題