|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |
@Target(value={METHOD,FIELD}) @Retention(value=RUNTIME) public @interface ManyToMany
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 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; }
Optional Element Summary | |
---|---|
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
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |
Copyright 2007 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.