Package org.hibernate.annotations

Annotation Type ManyToAny


  • @Target({METHOD,FIELD})@Retention(RUNTIME)public @interfaceManyToAny
    Maps a to-many cardinality association taking values over several entity types which arenot related by the usual entity inheritance, using a discriminator value stored in anassociation table.

    The annotated property should be of typeList,Set,Collection, orMap, and the elements of the collection must be entities.

    For example:

     @ManyToAny @Column(name = "property_type") @AnyKeyJavaClass(Long.class) @AnyDiscriminatorValue(discriminator = "S", entity = StringProperty.class) @AnyDiscriminatorValue(discriminator = "I", entity = IntegerProperty.class) @JoinTable(name = "repository_properties",            joinColumns = @JoinColumn(name = "repository_id"),            inverseJoinColumns = @JoinColumn(name = "property_id")) @Cascade(PERSIST) private List<Property<?>> properties = new ArrayList<>();

    In this example,Property is not required to be an entity type, it might even just be an interface, but its subtypesStringProperty andIntegerProperty must be entity classes with the same identifier type.

    This is just the many-valued form ofAny, and the mapping options are similar, except that the@JoinTable annotation is used to specify the association table.

    See Also:
    Any
    • Optional Element Summary

      Optional Elements 
      Modifier and TypeOptional ElementDescription
      FetchTypefetch
      Specifies whether the value of the field or property should be fetched lazily or eagerly:FetchType.EAGER, the default, requires that the association be fetched immediately, butFetchType.LAZY is a hint which has no effect unless bytecode enhancement is enabled.
    • Element Detail

      • fetch

        FetchType fetch
        Specifies whether the value of the field or property should be fetched lazily or eagerly:
        • FetchType.EAGER, the default, requires that the association be fetched immediately, but
        • FetchType.LAZY is a hint which has no effect unless bytecode enhancement is enabled.
        Default:
        jakarta.persistence.FetchType.EAGER