Разные типы для разных отношений - PullRequest
0 голосов
/ 06 марта 2012

Я хочу представить этот тип моделирования с помощью Spring Data Neo4j:

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

... где Object и Property являются NodeEntity, а где Value является RelationshipEntity.

Например:

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 ]

2 голосов
/ 14 марта 2012

Если ваши типы - это все типы, которые поддерживаются в Neo4j, вы можете использовать Объект в качестве целевого типа.И тогда фактический экземпляр будет сохранен как соответствующий тип в Neo4j.

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

    @GraphProperty
    Object value;

    public PropertyValue() {
    }
}
0 голосов
/ 12 марта 2012

Не могли бы вы использовать дженерики?

Property<T> {

...
T value();

}
...