blob: 0c8294377226470317c385d88230561de3a6e655 [file] [log] [blame]
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ForeignKey
{
/** Name of the foreign key.
* @return the name of the foreign key
*/
String name() default "";
/** Table for the foreign key. This is needed iff annotating a type where
* the foreign key is not defined on the primary table for the type.
* @return the table on which the foreign key is defined
*/
String table() default "";
/** Whether this foreign key is deferred
* (constraint is checked only at commit).
* @return whether this foreign key is deferred
*/
String deferred() default "";
/** Whether this foreign key is unique.
* @return whether this foreign key is unique
*/
String unique() default "";
/** The delete action of this foreign key.
* @return the delete action of this foreign key
*/
ForeignKeyAction deleteAction() default ForeignKeyAction.RESTRICT;
/** The update action of this foreign key.
* @return the update action of this foreign key
*/
ForeignKeyAction updateAction() default ForeignKeyAction.RESTRICT;
/** Member (field and property) names that compose this foreign key.
* @return the member names that compose this foreign key
*/
String[] members() default {};
/** Columns that compose this foreign key.
* @return the columns that compose this foreign key
*/
Column[] columns() default {};
}