Я создал базу данных с помощью 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}}}]
Кто-нибудь знает, как я могу сделать это двунаправленным, не бросая море ошибок в мое лицо.Заранее спасибо.