Annotation Interface By


@Retention(RUNTIME) @Target(PARAMETER) public @interface By

Annotates a parameter of a repository method, specifying a mapping to a persistent field:

  • if a field name is specified, the parameter maps to the persistent field with the specified name, or
  • if the special value "#id" is specified, the parameter maps to the unique identifier field or property.

Arguments to the annotated parameter are compared to values of the mapped persistent field.

The field name may be a compound name like address.city.

For example, for a Person entity with attributes ssn, firstName, lastName, and address we might have:

 @Repository
 public interface People {

     @Find
     Person findById(@By(ID) String id); // maps to Person.ssn

     @Find
     List<Person> findNamed(@By("firstName") String first,
                            @By("lastName") String last);

     @Find
     Person findByCity(@By("address.city") String city);
 }
 

The By annotation is unnecessary when the method parameter name matches the entity attribute name and the application is compiled with the -parameters compiler option that makes parameter names available at runtime.

Thus, when this compiler option is enabled, the previous example may be written without the use of By:

 @Repository
 public interface People {

     @Find
     Person findById(String ssn);

     @Find
     List<Person> findNamed(String firstName,
                            String lastname);

     @Find
     Person findByCity(String address_city);
 }
 
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    The name of the persistent field mapped by the annotated parameter, or "#id" to indicate the unique identifier field or property of the entity.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    The special value which indicates the unique identifier field or property.
  • Field Details

    • ID

      static final String ID
      The special value which indicates the unique identifier field or property. The annotation By(ID) maps a parameter to the identifier.
      See Also:
  • Element Details

    • value

      String value
      The name of the persistent field mapped by the annotated parameter, or "#id" to indicate the unique identifier field or property of the entity.
      Returns:
      the persistent field name, or "#id" to indicate the unique identifier field.