public String getForeignKeyClause() { StringBuilder builder = new StringBuilder(); if (isModel && annotations.containsKey(ForeignKey.class)) { ForeignKey foreignKey = (ForeignKey) annotations.get(ForeignKey.class); builder.append("FOREIGN KEY(").append(getColumnName()).append(") REFERENCES "); builder.append(modelTableName); if (foreignKey.foreignColumns().length > 0) { builder.append("("); builder.append(TextUtils.join(",", foreignKey.foreignColumns())); builder.append(")"); } if (!foreignKey.onDelete().equals(ReferentialAction.NONE)) { builder.append(" ON DELETE ").append(foreignKey.onDelete().keyword()); } if (!foreignKey.onUpdate().equals(ReferentialAction.NONE)) { builder.append(" ON UPDATE ").append(foreignKey.onUpdate().keyword()); } if (!foreignKey.deferrable().equals(ForeignKey.Deferrable.NONE)) { builder.append(" ").append(foreignKey.deferrable().keyword()); if (!foreignKey.deferrableTiming().equals(DeferrableTiming.NONE)) { builder.append(" ").append(foreignKey.deferrableTiming().keyword()); } } } return builder.toString(); }