| /******************************************************************************* |
| * Copyright (c) 2008 - 2013 Oracle Corporation. 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. |
| * |
| * Contributors: |
| * Linda DeMichiel - Java Persistence 2.1 |
| * Linda DeMichiel - Java Persistence 2.0 |
| * |
| ******************************************************************************/ |
| package javax.persistence; |
| |
| import java.lang.annotation.Target; |
| import java.lang.annotation.Retention; |
| import static java.lang.annotation.ElementType.FIELD; |
| import static java.lang.annotation.ElementType.METHOD; |
| import static java.lang.annotation.RetentionPolicy.RUNTIME; |
| import static javax.persistence.ConstraintMode.PROVIDER_DEFAULT; |
| |
| /** |
| * Specifies the mapping for composite foreign keys. This annotation |
| * groups <code>JoinColumn</code> annotations for the same relationship. |
| * |
| * <p> When the <code>JoinColumns</code> annotation is used, |
| * both the <code>name</code> and the <code>referencedColumnName</code> elements |
| * must be specified in each such <code>JoinColumn</code> annotation. |
| * |
| * <pre> |
| * |
| * Example: |
| * @ManyToOne |
| * @JoinColumns({ |
| * @JoinColumn(name="ADDR_ID", referencedColumnName="ID"), |
| * @JoinColumn(name="ADDR_ZIP", referencedColumnName="ZIP") |
| * }) |
| * public Address getAddress() { return address; } |
| * </pre> |
| * |
| * @see JoinColumn |
| * @see ForeignKey |
| * |
| * @since Java Persistence 1.0 |
| */ |
| @Target({METHOD, FIELD}) |
| @Retention(RUNTIME) |
| public @interface JoinColumns { |
| |
| /** |
| * The join columns that map the relationship. |
| */ |
| JoinColumn[] value(); |
| |
| /** |
| * (Optional) Used to specify or control the generation of a |
| * foreign key constraint when table generation is in effect. |
| * If both this element and the <code>foreignKey</code> element |
| * of any of the <code>JoinColumn</code> elements are specified, |
| * the behavior is undefined. If no foreign key annotation element |
| * is specified in either location, the persistence provider's |
| * default foreign key strategy will apply. |
| * |
| * @since Java Persistence 2.1 |
| */ |
| ForeignKey foreignKey() default @ForeignKey(PROVIDER_DEFAULT); |
| } |