Computed Values

Spring Data ArangoDB provides annotations to allow mapping computed values to entity properties and to include computed values data definitions during collection creation.

For reference, see the computed values documentation.

Mapping

Computed values can be mapped to entity properties by annotating the related fields with @ArangoComputedValue.

If the property is mutable, then the field is automatically updated in place with the value coming from the server in the following methods:

  • ArangoOperations#repsert(Object)
  • ArangoOperations#repsertAll(Iterable, Class)
  • ArangoRepository#save(Object)
  • ArangoRepository#saveAll(Iterable)

Data Definitions

Computed values data definitions can be specified through parameters of the following annotations:

  • @ArangoComputedValue on fields
  • @ArangoComputedValueDefinition on classes (optionally within @ArangoComputedValueDefinitions)

Example

@Document
@ArangoComputedValueDefinition(
        name = "username",
        expression = "RETURN \"unknown\"",
        computeOn = ComputedValue.ComputeOn.insert
)
class MyEntity {

    @ArangoComputedValue
    String username;

    @ArangoComputedValue("RETURN 0")
    int age;
    
    // ...

}

On database collection creation, the computed values metadata is included. Note that the data definitions are not updated in case the database collection already exists.