Use the @JoinFetch annotation to enable the joining and reading of the related objects in the same query as the source object.
Note:
You should set join fetching at the query level, as not all queries require joining.
Table 2-28 describes this annotation's elements.
Table 2-28 @JoinFetch Annotation Elements
| Annotation Element | Description | Default |
|---|---|---|
|
|
(Optional) Set this attribute to the The following are the valid values for the
|
|
You can specify the @JoinFetch annotation for the following mappings:
@OneToOne
@OneToMany
@ManyToOne
@ManyToMany
@ElementCollection
Alternatively, you can use batch fetching which is more efficient, especially for collection relationships.
The following example shows how to use the @JoinFetch annotation to specify Employee field managedEmployees.
Example 2-52 Using @JoinFetch Annotation
@Entity
public class Employee implements Serializable {
...
@OneToMany(cascade=ALL, mappedBy="owner")
@JoinFetch(value=OUTER)
public Collection<Employee> getManagedEmployees() {
return managedEmployees;
}
...
}
Example 2-53 shows how to use this extension in the eclipselink-orm.xml file.
Example 2-53 Using <join-fetch> in XML
<one-to-many name="managedEmployees">
<join-fetch>OUTER</join-fetch>
</one-to-many>
For more information, see:
Understanding Oracle TopLink
"Enhancing Performance" in Solutions Guide for Oracle TopLink