У меня возникают трудности с получением отношений, когда тип отношения аннотирован полем @RelationshipType
.
Отношения в Neoclipse выглядят правильно, но я не получаю результатов в своем приложении.
Код, который не работает (упрощенный):
@NodeEntity
public abstract class Entity {
@RelatedToVia
private Collection<Relationship> relationships;
public Relationship relatedTo(Entity entity, String type) {
Relationship relationship = new Relationship(type, this, entity);
relationships.add(relationship);
return relationship;
}
...
}
а также:
@RelationshipEntity
public class Relationship {
@RelationshipType
private String type;
...
}
Код, который работает:
@RelationshipEntity(type = "something")
public class Relationship {
...
}
Однако это не подходит для моего варианта использования (у меня есть куча разных типов Relationship
между произвольными комбинациями экземпляров Entity
.
Полный тестовый код приведен ниже. Agency
и Item
являются подклассами Entity
.
// Create first entity
Agency arnz = agencyRepository.save(new Agency());
arnz.setCode("ARNZ");
agencyRepository.save(arnz);
// Create second entity
Item r123 = itemRepository.save(new Item());
r123.setCode("R123");
// Create parent/child relationship between entities
r123.relatedTo(arnz, EntityRelationshipType.PARENT);
itemRepository.save(r123);
// Retrieve entity from database
Entity entity = itemRepository.findByCode("R123");
// Verify that relationship is present
assertThat(entity.getRelationships().iterator().hasNext(), is(true));
Последняя строка — это место, где тест терпит неудачу. Любые подсказки?
M
PS. Я любитель с Neo4j и случайно нашел @RelationshipType
, так что я вполне могу делать что-то смехотворно неправильное. Я надеюсь, что это так!
itemRepository.getRelationshipBetween(r123, arnz, Relationship.class, EntityRelationshipType.PARENT);
возвращает отношение, как и ожидалось. Однако, опять же, это не то, что требует мой вариант использования, поэтому он не очень полезен! - person nullPainter   schedule 03.06.2012Node node = template.getNode(entity.getId());
и последующий вызовnode.getRelationships();
также правильно возвращают отношение, только в менее полезном типе node4j rawRelationship
. Итак, явно проблема реализации Spring Data, а не что-то принципиально неправильное в моем графике? - person nullPainter   schedule 03.06.2012@RelatedToVia(direction = Direction.BOTH, type = EntityRelationshipType.PARENT)
(т. е. добавлюtype
). Что опять же не очень полезно, поскольку мне нужен разнородный набор типов отношений в одной коллекции. Или это просто ограничение фреймворка? Я использую 2.1.0.BUILD-SNAPSHOT. - person nullPainter   schedule 03.06.2012