Defines a many-valued association with many-to-many multiplicity. If the Collection is defined using generics to specify the element type, the associated target entity class does not need to be specified; otherwise it must be specified.
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 Set getPhones() { 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; }
Since:
Java Persistence 1.0
Documentação da JPA de @ManytoMany, eles tem exemplos e tals, é bem legal.