org.eclipse.persistence.annotations.PrimaryKey Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eclipselink Show documentation
Show all versions of eclipselink Show documentation
EclipseLink build based upon Git transaction f2b9fc5
/*
* Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// James Sutherland - initial implementation
package org.eclipse.persistence.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import jakarta.persistence.Column;
/**
* The PrimaryKey annotation allows advanced configuration of the Id.
* A validation policy can be given that allows specifying if zero is a valid id value.
* The set of primary key columns can also be specified precisely.
*
* @author James Sutherland
* @since EclipseLink 1.1
*/
@Target({TYPE})
@Retention(RUNTIME)
public @interface PrimaryKey {
/**
* (Optional) Configures what id validation is done.
* By default 0 is not a valid id value, this can be used to allow 0 id values.
*/
IdValidation validation() default IdValidation.ZERO;
/**
* (Optional) Configures what cache key type is used to store the object in the cache.
* By default the type is determined by what type is optimal for the class.
*/
CacheKeyType cacheKeyType() default CacheKeyType.AUTO;
/**
* (Optional) Used to specify the primary key columns directly.
* This can be used instead of @Id if the primary key includes a non basic field,
* such as a foreign key, or a inheritance discriminator, embedded, or transformation mapped field.
*/
Column[] columns() default {};
}