Top Description Methods
org.hibernate.annotations

public @Interface ManyToAny

extends Annotation
Annotations
@Target:METHOD, FIELD
@Retention:RUNTIME
Imports
java.lang.annotation.Retention, .Target, jakarta.persistence.FetchType

Maps a to-many cardinality association taking values over several entity types which are not related by the usual entity inheritance, using a discriminator value stored in an association table.

The annotated property should be of type java.util.List, java.util.Set, java.util.Collection, or java.util.Map, 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 subtypes StringProperty and IntegerProperty must be entity classes with the same identifier type.

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

Authors
Emmanuel Bernard, Steve Ebersole
See Also
Any

Method Summary

Modifier and TypeMethod and Description
public 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.
Inherited from java.lang.annotation.Annotation:
annotationTypeequalshashCodetoString

Method Detail

fetchback to summary
public 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.