Annotation Type Any


  • @Target({METHOD,FIELD})
    @Retention(RUNTIME)
    public @interface Any
    Maps a discriminated to-one style association pointing to one of several entity types depending on a local discriminator, as opposed to discriminated inheritance where the discriminator is kept as part of the entity hierarchy (see Inheritance and InheritanceType.SINGLE_TABLE for details about discriminated inheritance mappings).

    For example, if you consider an Order entity containing Payment information where Payment might be of type CashPayment or CreditCardPayment, the @Any approach would be to keep that discriminator and matching value on the Order itself instead as part of the Payment class. Thought of another way, the "foreign key" is really made up of the value and discriminator. Note however that this composite foreign-key is a conceptual and cannot be physical.

    See Also:
    ManyToAny
    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      jakarta.persistence.FetchType fetch
      Defines whether the value of the field or property should be lazily loaded or must be eagerly fetched.
      boolean optional
      Whether the association is optional.
    • Element Detail

      • fetch

        jakarta.persistence.FetchType fetch
        Defines whether the value of the field or property should be lazily loaded or must be eagerly fetched. The EAGER strategy is a requirement on the persistence provider runtime that the value must be eagerly fetched. The LAZY strategy is applied when bytecode enhancement is used. If not specified, defaults to EAGER.
        Default:
        jakarta.persistence.FetchType.EAGER
      • optional

        boolean optional
        Whether the association is optional. If set to false then a non-null relationship must always exist.
        Default:
        true