ArangoDB spring-data: двунаправленные отношения не работают - PullRequest
0 голосов
/ 18 декабря 2018

Я создал базу данных с помощью arangodb, доступ к которой осуществляется с помощью сервера начальной загрузки.

База данных содержит два документа, OvenEntity и WorkOrderEntity, которые связаны с OvenRelationEdge.Я пытаюсь установить двустороннее отношение, при котором запрос для данного OvenEntity вернет эту запись базы данных плюс связанную с ней WorkOrderEntities и наоборот.Ниже приведены определения отношений:

OvenEntity.java

@Document("ovens")
@HashIndex(fields = { "ovenNumber", "location" }, unique = true)
public class OvenEntity {

@Id
private String id;

@Relations(edges = OvenRelationEdge.class, direction =Direction.ANY,minDepth = 0, maxDepth = 1)
private Collection<WorkOrderEntity> workOrders;

WorkOrderEntity.java

@Document("workorders")
public class WorkOrderEntity {

@Id
private String id;

@Relations(edges = OvenRelationEdge.class,direction =Direction.ANY,minDepth 
= 0, maxDepth=1) 
private Collection<OvenEntity> oven;

OvenRelationEdge.java

  @Edge
  public class OvenRelationEdge {

  @Id
  private String id;

  @From
  private OvenEntity ovenEntity;

  @To
  private WorkOrderEntity workOrderEntity;

Когда я запрашиваю один из этих объектов, я получаю ошибку stackoverflow.Я обнаружил, что если я изменю аргумент направления в аннотации realtion на direction =direction.OUTBOUND для обоих классов, то в зависимости от того, какие классы передаются в аннотацию @From и @to, я могу заставить один из них вернутьвложенный ссылочный объект, но не наоборот, т.е. (с параметром OvenEntity на @From):

[{"id":"ovens/467346","workOrders":[{"id":"workorders/467334","oven":[],"productName":"TUDS350","commissionedBy":"Transnet","startDate":{"date":{"year":2018,"month":12,"day":18},"time":{"hour":12,"minute":23,"second":54,"nano":261000000}},"endDate":{"date":{"year":2018,"month":12,"day":18},"time":{"hour":12,"minute":23,"second":54,"nano":261000000}}}],"ovenNumber":"1","location":"Auckland"}]. 

Здесь вы можете видеть, что связанные рабочие задания были вложенными.Тем не менее, при запросе workOrders я получаю следующее, в этом случае духовые шкафы не являются вложенными.

[{"id":"workorders/467330","oven":[],"productName":"Mini Round","commissionedBy":"Clarks","startDate":{"date":{"year":2018,"month":12,"day":18},"time":{"hour":12,"minute":23,"second":53,"nano":946000000}},"endDate":{"date":{"year":2018,"month":12,"day":18},"time":{"hour":12,"minute":23,"second":53,"nano":948000000}}},{"id":"workorders/467334","oven":[],"productName":"TUDS350","commissionedBy":"Transnet","startDate":{"date":{"year":2018,"month":12,"day":18},"time":{"hour":12,"minute":23,"second":54,"nano":261000000}},"endDate":{"date":{"year":2018,"month":12,"day":18},"time":{"hour":12,"minute":23,"second":54,"nano":261000000}}}]

Кто-нибудь знает, как я могу сделать это двунаправленным, не бросая море ошибок в мое лицо.Заранее спасибо.

...