@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 {}; }