Named queries

An alternative to using the @Query annotation on methods is specifying them in a separate .properties file. The default path for the file is META-INF/arango-named-queries.properties and can be changed with the EnableArangoRepositories#namedQueriesLocation() setting. The entries in the properties file must adhere to the following convention: {simple entity name}.{method name} = {query}. Let’s assume we have the following repository interface:

package com.arangodb.repository;

public interface CustomerRepository extends ArangoRepository<Customer, String> {

    Customer findByUsername(@Param("username") String username);

}

The corresponding arango-named-queries.properties file looks like this:

Customer.findByUsername = FOR c IN customers FILTER c.username == @username RETURN c

The queries specified in the properties file are no different than the queries that can be defined with the @Query annotation. The only difference is that the queries are in one place. If there is a @Query annotation present and a named query defined, the query in the @Query annotation takes precedence.