From 7f2e4f54ff6cb65cf20f400cc1561db26cbe5abd Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Mon, 1 Jul 2019 21:04:40 +1200 Subject: [PATCH] #1743 - Add hasForeignKeyConstraint() Separate hasForeignKeyConstraint() for DDL use from hasForeignKey() used in query --- .../model/build/ModelBuildIntersectionTable.java | 3 +-- .../model/build/ModelBuildPropertyVisitor.java | 5 ++--- .../server/deploy/BeanPropertyAssoc.java | 16 +++++++++++++++- .../server/deploy/BeanPropertyAssocOne.java | 4 ---- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/ebeaninternal/dbmigration/model/build/ModelBuildIntersectionTable.java b/src/main/java/io/ebeaninternal/dbmigration/model/build/ModelBuildIntersectionTable.java index 9c2cf29ec..e117c3ead 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/model/build/ModelBuildIntersectionTable.java +++ b/src/main/java/io/ebeaninternal/dbmigration/model/build/ModelBuildIntersectionTable.java @@ -49,8 +49,7 @@ class ModelBuildIntersectionTable { private void buildFkConstraints() { - PropertyForeignKey foreignKey = manyProp.getForeignKey(); - if (foreignKey == null || !foreignKey.isNoConstraint()) { + if (manyProp.hasForeignKeyConstraint()) { ctx.fkeyBuilder(intersectionTable) .addForeignKey(manyProp.getBeanDescriptor(), intersectionTableJoin, true) .addForeignKey(manyProp.getTargetDescriptor(), tableJoin, false); diff --git a/src/main/java/io/ebeaninternal/dbmigration/model/build/ModelBuildPropertyVisitor.java b/src/main/java/io/ebeaninternal/dbmigration/model/build/ModelBuildPropertyVisitor.java index 94650eeec..338941122 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/model/build/ModelBuildPropertyVisitor.java +++ b/src/main/java/io/ebeaninternal/dbmigration/model/build/ModelBuildPropertyVisitor.java @@ -170,8 +170,6 @@ public class ModelBuildPropertyVisitor extends BaseTablePropertyVisitor { List modelColumns = new ArrayList<>(columns.length); - PropertyForeignKey foreignKey = p.getForeignKey(); - MCompoundForeignKey compoundKey = null; if (columns.length > 1) { // compound foreign key @@ -196,7 +194,7 @@ public class ModelBuildPropertyVisitor extends BaseTablePropertyVisitor { col.setDbMigrationInfos(p.getDbMigrationInfos()); col.setDefaultValue(p.getDbColumnDefault()); if (columns.length == 1) { - if (p.hasForeignKey() && !importedProperty.getBeanDescriptor().suppressForeignKey()) { + if (p.hasForeignKeyConstraint() && !importedProperty.getBeanDescriptor().suppressForeignKey()) { // single references column (put it on the column) String refTable = importedProperty.getBeanDescriptor().getBaseTable(); if (refTable == null) { @@ -208,6 +206,7 @@ public class ModelBuildPropertyVisitor extends BaseTablePropertyVisitor { if (p.hasForeignKeyIndex()) { col.setForeignKeyIndex(determineForeignKeyIndexName(col.getName())); } + PropertyForeignKey foreignKey = p.getForeignKey(); if (foreignKey != null) { col.setForeignKeyModes(foreignKey.getOnDelete(), foreignKey.getOnUpdate()); } diff --git a/src/main/java/io/ebeaninternal/server/deploy/BeanPropertyAssoc.java b/src/main/java/io/ebeaninternal/server/deploy/BeanPropertyAssoc.java index b8915f710..a03d1e713 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/BeanPropertyAssoc.java +++ b/src/main/java/io/ebeaninternal/server/deploy/BeanPropertyAssoc.java @@ -155,6 +155,20 @@ public abstract class BeanPropertyAssoc extends BeanProperty implements STree return foreignKey; } + /** + * Return true if foreign key constraint is enabled on this relationship (not disabled). + */ + public boolean hasForeignKeyConstraint() { + return foreignKey == null || !foreignKey.isNoConstraint(); + } + + /** + * Return true if foreign key index is enabled on this relationship (not disabled). + */ + public boolean hasForeignKeyIndex() { + return foreignKey == null || !foreignKey.isNoIndex(); + } + /** * Create a ElPropertyValue for a *ToOne or *ToMany. */ @@ -228,7 +242,7 @@ public abstract class BeanPropertyAssoc extends BeanProperty implements STree /** * Create a new query for the target type. - * + *

* We use target descriptor rather than target property type to support ElementCollection. */ public SpiQuery newQuery(SpiEbeanServer server) { diff --git a/src/main/java/io/ebeaninternal/server/deploy/BeanPropertyAssocOne.java b/src/main/java/io/ebeaninternal/server/deploy/BeanPropertyAssocOne.java index 23ba314cf..5da1a43df 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/BeanPropertyAssocOne.java +++ b/src/main/java/io/ebeaninternal/server/deploy/BeanPropertyAssocOne.java @@ -363,10 +363,6 @@ public class BeanPropertyAssocOne extends BeanPropertyAssoc implements STr return foreignKey == null || primaryKeyJoin || !foreignKey.isNoConstraint(); } - public boolean hasForeignKeyIndex() { - return foreignKey == null || !foreignKey.isNoIndex(); - } - /** * Return true if this a OneToOne property. Otherwise assumed ManyToOne. */