All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jakarta.persistence.ForeignKey Maven / Gradle / Ivy

/*
 * Copyright (c) 2011, 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:
//     Linda DeMichiel - 2.1

package jakarta.persistence;

import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static jakarta.persistence.ConstraintMode.CONSTRAINT;

/**
 * Used to specify the handling of foreign key constraints when schema
 * generation is in effect.  If this annotation is not specified, the
 * persistence provider's default foreign key strategy will be used.
 * 

* The ConstraintMode value is used to specify whether foreign * key constraints should be generated. *

* The syntax used in the foreignKeyDefinition element * should follow the SQL syntax used by the target database for foreign * key constraints. For example, this may be similar the following: *

 * FOREIGN KEY ( <COLUMN expression> {, <COLUMN expression>}... )
 * REFERENCES <TABLE identifier> [
 *     (<COLUMN expression> {, <COLUMN expression>}... ) ]
 * [ ON UPDATE <referential action> ]
 * [ ON DELETE <referential action> ]
 * 
* * When the ConstraintMode value is * CONSTRAINT, but the foreignKeyDefinition * element is not specified, the provider will generate foreign key * constraints whose update and delete actions it determines most * appropriate for the join column(s) to which the foreign key * annotation is applied. * * @see JoinColumn * @see JoinColumns * @see MapKeyJoinColumn * @see MapKeyJoinColumns * @see PrimaryKeyJoinColumn * @see JoinTable * @see CollectionTable * @see SecondaryTable * @see AssociationOverride * * @since 2.1 */ @Target({}) @Retention(RUNTIME) public @interface ForeignKey { /** * (Optional) The name of the foreign key constraint. If this * is not specified, it defaults to a provider-generated name. */ String name() default ""; /** * (Optional) Used to specify whether a foreign key constraint should be * generated when schema generation is in effect. *

* A value of CONSTRAINT will cause the persistence * provider to generate a foreign key constraint. If the * foreignKeyDefinition element is not specified, the * provider will generate a constraint whose update * and delete actions it determines most appropriate for the * join column(s) to which the foreign key annotation is applied. *

* A value of NO_CONSTRAINT will result in no * constraint being generated. *

* A value of PROVIDER_DEFAULT will result in the * provider's default behavior (which may or may not result * in the generation of a constraint for the given join column(s). */ ConstraintMode value() default CONSTRAINT; /** * (Optional) The foreign key constraint definition. */ String foreignKeyDefinition() default ""; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy