You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.5 KiB
129 lines
4.5 KiB
/* |
|
* Copyright (c) 2008, 2009, 2011 Oracle, Inc. All rights reserved. |
|
* |
|
* This program and the accompanying materials are made available under the |
|
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 |
|
* which accompanies this distribution. The Eclipse Public License is available |
|
* at http://www.eclipse.org/legal/epl-v10.html and the Eclipse Distribution License |
|
* is available at http://www.eclipse.org/org/documents/edl-v10.php. |
|
*/ |
|
package com.fr.third.javax.persistence; |
|
|
|
import java.lang.annotation.Retention; |
|
import java.lang.annotation.Target; |
|
|
|
import static java.lang.annotation.ElementType.FIELD; |
|
import static java.lang.annotation.ElementType.METHOD; |
|
import static java.lang.annotation.RetentionPolicy.RUNTIME; |
|
import static com.fr.third.javax.persistence.FetchType.LAZY; |
|
|
|
/** |
|
* Defines a many-valued association with one-to-many multiplicity. |
|
* |
|
* <p> If the collection is defined using generics to specify the |
|
* element type, the associated target entity type need not be |
|
* specified; otherwise the target entity class must be specified. |
|
* If the relationship is bidirectional, the |
|
* <code> mappedBy</code> element must be used to specify the relationship field or |
|
* property of the entity that is the owner of the relationship. |
|
* |
|
* <p> The <code>OneToMany</code> annotation may be used within an embeddable class |
|
* contained within an entity class to specify a relationship to a |
|
* collection of entities. If the relationship is bidirectional, the |
|
* <code> mappedBy</code> element must be used to specify the relationship field or |
|
* property of the entity that is the owner of the relationship. |
|
* |
|
* When the collection is a <code>java.util.Map</code>, the <code>cascade</code> |
|
* element and the <code>orphanRemoval</code> element apply to the map value. |
|
* |
|
* <pre> |
|
* |
|
* Example 1: One-to-Many association using generics |
|
* |
|
* // In Customer class: |
|
* |
|
* @OneToMany(cascade=ALL, mappedBy="customer") |
|
* public Set<Order> getOrders() { return orders; } |
|
* |
|
* In Order class: |
|
* |
|
* @ManyToOne |
|
* @JoinColumn(name="CUST_ID", nullable=false) |
|
* public Customer getCustomer() { return customer; } |
|
* |
|
* |
|
* Example 2: One-to-Many association without using generics |
|
* |
|
* // In Customer class: |
|
* |
|
* @OneToMany(targetEntity=com.acme.Order.class, cascade=ALL, |
|
* mappedBy="customer") |
|
* public Set getOrders() { return orders; } |
|
* |
|
* // In Order class: |
|
* |
|
* @ManyToOne |
|
* @JoinColumn(name="CUST_ID", nullable=false) |
|
* public Customer getCustomer() { return customer; } |
|
* |
|
* |
|
* Example 3: Unidirectional One-to-Many association using a foreign key mapping |
|
* |
|
* // In Customer class: |
|
* |
|
* @OneToMany(orphanRemoval=true) |
|
* @JoinColumn(name="CUST_ID") // join column is in table for Order |
|
* public Set<Order> getOrders() {return orders;} |
|
* |
|
* </pre> |
|
* |
|
* @since Java Persistence 1.0 |
|
*/ |
|
@Target({METHOD, FIELD}) |
|
@Retention(RUNTIME) |
|
public @interface OneToMany { |
|
|
|
/** |
|
* (Optional) The entity class that is the target |
|
* of the association. Optional only if the collection |
|
* property is defined using Java generics. |
|
* Must be specified otherwise. |
|
* |
|
* <p> Defaults to the parameterized type of |
|
* the collection when defined using generics. |
|
*/ |
|
Class targetEntity() default void.class; |
|
|
|
/** |
|
* (Optional) The operations that must be cascaded to |
|
* the target of the association. |
|
* <p> Defaults to no operations being cascaded. |
|
* |
|
* <p> When the target collection is a {@link java.util.Map |
|
* java.util.Map}, the <code>cascade</code> element applies to the |
|
* map value. |
|
*/ |
|
CascadeType[] cascade() default {}; |
|
|
|
/** (Optional) Whether the association should be lazily loaded or |
|
* must be eagerly fetched. The EAGER strategy is a requirement on |
|
* the persistence provider runtime that the associated entities |
|
* must be eagerly fetched. The LAZY strategy is a hint to the |
|
* persistence provider runtime. |
|
*/ |
|
FetchType fetch() default LAZY; |
|
|
|
/** |
|
* The field that owns the relationship. Required unless |
|
* the relationship is unidirectional. |
|
*/ |
|
String mappedBy() default ""; |
|
|
|
/** |
|
* (Optional) Whether to apply the remove operation to entities that have |
|
* been removed from the relationship and to cascade the remove operation to |
|
* those entities. |
|
* @since Java Persistence 2.0 |
|
*/ |
|
boolean orphanRemoval() default false; |
|
}
|
|
|