/*
 * 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 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 javax.persistence.GenerationType.AUTO;

Provides for the specification of generation strategies for the values of primary keys.

The GeneratedValue annotation may be applied to a primary key property or field of an entity or mapped superclass in conjunction with the Id annotation. The use of the GeneratedValue annotation is only required to be supported for simple primary keys. Use of the GeneratedValue annotation is not supported for derived primary keys.

    Example 1:
    @Id
    @GeneratedValue(strategy=SEQUENCE, generator="CUST_SEQ")
    @Column(name="CUST_ID")
    public Long getId() { return id; }
    Example 2:
    @Id
    @GeneratedValue(strategy=TABLE, generator="CUST_GEN")
    @Column(name="CUST_ID")
    Long id;
See Also:
Since:Java Persistence 1.0
/** * Provides for the specification of generation strategies for the * values of primary keys. * <p> * <p> The <code>GeneratedValue</code> annotation * may be applied to a primary key property or field of an entity or * mapped superclass in conjunction with the {@link Id} annotation. * The use of the <code>GeneratedValue</code> annotation is only * required to be supported for simple primary keys. Use of the * <code>GeneratedValue</code> annotation is not supported for derived * primary keys. * <p> * <pre> * * Example 1: * * &#064;Id * &#064;GeneratedValue(strategy=SEQUENCE, generator="CUST_SEQ") * &#064;Column(name="CUST_ID") * public Long getId() { return id; } * * Example 2: * * &#064;Id * &#064;GeneratedValue(strategy=TABLE, generator="CUST_GEN") * &#064;Column(name="CUST_ID") * Long id; * </pre> * * @see Id * @see TableGenerator * @see SequenceGenerator * @since Java Persistence 1.0 */
@Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface GeneratedValue {
(Optional) The primary key generation strategy that the persistence provider must use to generate the annotated entity primary key.
Returns:strategy
/** * (Optional) The primary key generation strategy * that the persistence provider must use to * generate the annotated entity primary key. * * @return strategy */
GenerationType strategy() default AUTO;
(Optional) The name of the primary key generator to use as specified in the SequenceGenerator or TableGenerator annotation.

Defaults to the id generator supplied by persistence provider.

Returns:generator
/** * (Optional) The name of the primary key generator * to use as specified in the {@link SequenceGenerator} * or {@link TableGenerator} annotation. * <p> Defaults to the id generator supplied by persistence provider. * * @return generator */
String generator() default ""; }