Я пытаюсь подключить различные типы узлов из Spring Data Neo4j. Рекомендуется ли (или не рекомендуется) использовать один и тот же тип связи для аналогичных отношений, связывающих разные типы узлов?
Например, если у нас есть класс Driver (с аннотацией @NodeEntity), и мы хотим смоделировать тот факт, что водитель может управлять разными транспортными средствами, например. Автомобили и мотоциклы, это лучше иметь:
@RelatedTo(elementClass = CarNode.class, type = "drives", direction = OUTGOING)
private Set<Car> cars;
@RelatedTo(elementClass = BikeNode.class, type = "drives", direction = OUTGOING)
private Set<Bike> bikes;
потому что водитель может управлять разными типами транспортных средств, или мы должны указать тип транспортного средства в отношении :
@RelatedTo(elementClass = CarNode.class, type = "drivesCar", direction = OUTGOING)
private Set<Car> cars;
@RelatedTo(elementClass = BikeNode.class, type = "drivesBike", direction = OUTGOING)
private Set<Bike> bikes;
Первая возможность кажется более семантически правильной, но кажется логичным, что использование определенных отношений по всему графу может обеспечить более быстрый обход (нет необходимости тестировать типы узлов).
Если общие отношения лучше, как можно получить только набор автомобилей или только набор велосипедов с помощью запроса Cypher?
Спасибо!