ArangoDB v3.9 reached End of Life (EOL) and is no longer supported.
This documentation is outdated. Please see the most recent version at docs.arangodb.com
Edge
Annotation @Edge
The annotations @Edge applied to a class marks this class as a candidate for mapping to the database. The most relevant parameter is value to specify the collection name in the database. The annotation @Edge specifies the collection type to EDGE.
@Edge("relations")
public class Relation {
  ...
}
Spring Expression support
Spring Data ArangoDB supports the use of SpEL expressions within @Edge#value. This feature lets you define a dynamic collection name which can be used to implement multi tenancy applications.
@Component
public class TenantProvider {
  public String getId() {
    // threadlocal lookup
  }
}
@Edge("#{tenantProvider.getId()}_relations")
public class Relation {
  ...
}
Annotation @From and @To
With the annotations @From and @To applied on a field in a class annotated with @Edge the nested object is fetched from the database. The nested object has to be stored as a separate document in the collection described in the @Document annotation of the nested object class. The _id field of this nested object is stored in the fields _from or _to within the edge document.
@Edge("relations")
public class Relation {
  @From
  private Person c1;
  @To
  private Person c2;
}
@Document(value="persons")
public class Person {
  @Id
  private String id;
}
The database representation of Relation in collection relations looks as follow:
{
  "_key" : "123",
  "_id" : "relations/123",
  "_from" : "persons/456",
  "_to" : "persons/789"
}
and the representation of Person in collection persons:
{
  "_key" : "456",
  "_id" : "persons/456",
}
{
  "_key" : "789",
  "_id" : "persons/789",
}
Note: If you want to save an instance of Relation, both Person objects (from & to) already have to be persisted and the class Person needs a field with the annotation @Id so it can hold the persisted _id from the database.
 
     
    