ArangoDB v3.4 reached End of Life (EOL) and is no longer supported.

This documentation is outdated. Please see the most recent version here: Latest Docs

Reference

With the annotation @Ref applied on a field the nested object isn’t stored as a nested object in the document. The _id field of the nested object is stored in the document and the nested object has to be stored as a separate document in another collection described in the @Document annotation of the nested object class. To successfully persist an instance of your object the referencing field has to be null or it’s instance has to provide a field with the annotation @Id including a valid id.

Examples

@Document(value="persons")
public class Person {
  @Ref
  private Address address;
}

@Document("addresses")
public class Address {
  @Id
  private String id;
  private String country;
  private String street;
}

The database representation of Person in collection persons looks as follow:

{
  "_key" : "123",
  "_id" : "persons/123",
  "address" : "addresses/456"
}

and the representation of Address in collection addresses:

{
  "_key" : "456",
  "_id" : "addresses/456",
  "country" : "...",
  "street" : "..."
}

Without the annotation @Ref at the field address, the stored document would look:

{
  "_key" : "123",
  "_id" : "persons/123",
  "address" : {
    "country" : "...",
     "street" : "..."
  }
}