package org.zstack.header.vo; import java.lang.annotation.Retention; import java.lang.annotation.Target; /** */ @Target(java.lang.annotation.ElementType.FIELD) @Retention(java.lang.annotation.RetentionPolicy.RUNTIME) public @interface ForeignKey { enum ReferenceOption { RESTRICT("RESTRICT"), CASCADE("CASCADE"), SET_NULL("SET NULL"), NO_ACTION("NO ACTION"); private String reference; private ReferenceOption(String reference) { this.reference = reference; } public String toOnDeleteSql() { return String.format("ON DELETE %s", reference); } public String toOnUpdateSql() { return String.format("ON UPDATE %s", reference); } @Override public String toString() { return reference; } } Class parentEntityClass(); String parentKey() default ""; ReferenceOption onUpdateAction() default ReferenceOption.NO_ACTION; ReferenceOption onDeleteAction() default ReferenceOption.NO_ACTION; }