javax.persistence.MapKeyEnumerated Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of javax.persistence Show documentation
Show all versions of javax.persistence Show documentation
The Java Persistence API (JPA) : a standard interface-based Java model abstraction of persistence, developed by the JCP.
/*
* 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.
*/
// $Id: $
package javax.persistence;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
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.EnumType.ORDINAL;
/**
* Specifies the enum type for a map key whose basic type is an enumerated type. The
* MapKeyEnumerated
annotation can be applied to an element collection or relationship of type
* java.util.Map
, in conjunction with the ElementCollection
, OneToMany
,
* or ManyToMany
annotation. If the enumerated type is not specified or the
* MapKeyEnumerated
annotation is not used, the enumerated type is assumed to be
* ORDINAL
.
*
*
* Example:
*
* public enum ProjectStatus {COMPLETE, DELAYED, CANCELLED, IN_PROGRESS}
*
* public enum SalaryRate {JUNIOR, SENIOR, MANAGER, EXECUTIVE}
*
* @Entity public class Employee {
* @ManyToMany
* public Projects<ProjectStatus, Project> getProjects() {...}
*
* @OneToMany
* @MapKeyEnumerated(STRING)
* public Map<SalaryRate, Employee> getEmployees() {...}
* ...
* }
*
* @see ElementCollection
* @see OneToMany
* @see ManyToMany
* @since Java Persistence 2.0
*/
@Target({ANNOTATION_TYPE, METHOD, FIELD})
@Retention(RUNTIME)
public @interface MapKeyEnumerated
{
/**
* (Optional) The type used in mapping a map key enum type.
* @return The type
*/
EnumType value() default ORDINAL;
}