不同关系实体的不同类型

时间:2012-03-06 16:05:30

标签: java-ee neo4j graph-databases spring-data spring-data-graph

我想用Spring Data Neo4j代表这种类型的建模:

Object ------Value------> Property

...其中ObjectPropertyNodeEntity,其中ValueRelationshipEntity

例如:

Car1 ------String value="Ford"------> Brand
Car1 ------int value=20000------> Cost
Car2 ------int value=30000------> Cost
Car2 ------boolean value=true------> HasWheels

我知道我有可能将所有这些属性直接放在汽车节点中。但是我希望将此模型用于未来的图形遍历优化。它看起来像这样:

@RelationshipEntity(type="PROPERTY_VALUE")
public class PropertyValue {
    @GraphId Long id;
    @StartNode Car car;
    @EndNode Property property;

    <???value_type???> value;

    public PropertyValue() {
    }
}

问题是我不知道我必须使用哪种类型的value属性。有没有可能用Spring Data Neo4j做到这一点?

谢谢。

2 个答案:

答案 0 :(得分:2)

如果你的类型是Neo4j支持的所有类型,你可以使用Object作为目标类型。然后将实际实例存储为Neo4j中的相应类型。

@RelationshipEntity(type="PROPERTY_VALUE")
public class PropertyValue {
    @GraphId Long id;
    @StartNode Car car;
    @EndNode Property property;

    @GraphProperty
    Object value;

    public PropertyValue() {
    }
}

答案 1 :(得分:0)

你能否使用泛型?

Property<T> {

...
T value();

}