@Target(value={METHOD,FIELD}) @Retention(value=RUNTIME) public @interface ManyToMany
Every many-to-many association has two sides, the owning side and the non-owning, or inverse, side. The join table is specified on the owning side. If the association is bidirectional, either side may be designated as the owning side.
The same annotation elements for the OneToMany
annotation apply to the ManyToMany
annotation.
Example 1: In Customer class: @ManyToMany @JoinTable(name="CUST_PHONES") public SetgetPhones() { return phones; } In PhoneNumber class: @ManyToMany(mappedBy="phones") public Set getCustomers() { return customers; } Example 2: In Customer class: @ManyToMany(targetEntity=com.acme.PhoneNumber.class) public Set getPhones() { return phones; } In PhoneNumber class: @ManyToMany(targetEntity=com.acme.Customer.class, mappedBy="phones") public Set getCustomers() { return customers; } Example 3: In Customer class: @ManyToMany @JoinTable(name="CUST_PHONE", joinColumns= @JoinColumn(name="CUST_ID", referencedColumnName="ID"), inverseJoinColumns= @JoinColumn(name="PHONE_ID", referencedColumnName="ID") ) public Set getPhones() { return phones; } In PhoneNumberClass: @ManyToMany(mappedBy="phones") public Set getCustomers() { return customers; }
Modifier and Type | Optional Element and Description |
---|---|
CascadeType[] |
cascade
(Optional) The operations that must be cascaded to
the target of the association.
|
FetchType |
fetch
(Optional) Whether the association should be
lazily loaded or must be eagerly fetched.
|
String |
mappedBy
The field that owns the relationship.
|
Class |
targetEntity
(Optional) The entity class that is the target
of the association.
|
public abstract Class targetEntity
Defaults to the parameterized type of the collection when defined using generics.
public abstract CascadeType[] cascade
Defaults to no operations being cascaded.
public abstract FetchType fetch
EAGER
strategy is a
requirement on the persistenceprovider runtime
that the associatedentities must be eagerly fetched.
The LAZY
strategy is a hint
to the persistence provider runtime.public abstract String mappedBy
Copyright © 2023. All rights reserved.