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.
94 lines
2.9 KiB
94 lines
2.9 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; |
|
|
|
/** |
|
* Specifies the map key for associations of type |
|
* {@link java.util.Map java.util.Map} when the map key is itself the primary |
|
* key or a persistent field or property of the entity that is |
|
* the value of the map. |
|
* |
|
* <p> If a persistent field or property other than the primary |
|
* key is used as a map key then it is expected to have a |
|
* uniqueness constraint associated with it. |
|
* |
|
* <p> The {@link MapKeyClass} annotation is not used when |
|
* <code>MapKey</code> is specified and vice versa. |
|
* |
|
* <pre> |
|
* |
|
* Example 1: |
|
* |
|
* @Entity |
|
* public class Department { |
|
* ... |
|
* @OneToMany(mappedBy="department") |
|
* @MapKey // map key is primary key |
|
* public Map<Integer, Employee> getEmployees() {... } |
|
* ... |
|
* } |
|
* |
|
* @Entity |
|
* public class Employee { |
|
* ... |
|
* @Id Integer getEmpId() { ... } |
|
* @ManyToOne |
|
* @JoinColumn(name="dept_id") |
|
* public Department getDepartment() { ... } |
|
* ... |
|
* } |
|
* |
|
* Example 2: |
|
* |
|
* @Entity |
|
* public class Department { |
|
* ... |
|
* @OneToMany(mappedBy="department") |
|
* @MapKey(name="name") |
|
* public Map<String, Employee> getEmployees() {... } |
|
* ... |
|
* } |
|
* |
|
* @Entity |
|
* public class Employee { |
|
* @Id public Integer getEmpId() { ... } |
|
* ... |
|
* @ManyToOne |
|
* @JoinColumn(name="dept_id") |
|
* public Department getDepartment() { ... } |
|
* ... |
|
* } |
|
* </pre> |
|
* |
|
* @since Java Persistence 1.0 |
|
*/ |
|
@Target({METHOD, FIELD}) |
|
@Retention(RUNTIME) |
|
public @interface MapKey { |
|
|
|
/** |
|
* (Optional) The name of the persistent field or property of the |
|
* associated entity that is used as the map key. |
|
* <p> Default: If the |
|
* <code>name</code> element is not specified, the primary key of the |
|
* associated entity is used as the map key. If the |
|
* primary key is a composite primary key and is mapped |
|
* as <code>IdClass</code>, an instance of the primary key |
|
* class is used as the key. |
|
*/ |
|
String name() default ""; |
|
}
|
|
|