From f88524b34cebc1d183aa368db3e7e20fe8611cb7 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Mon, 30 Jun 2014 22:03:31 +1200 Subject: [PATCH] Fix for #156 - NPE in DDL Generation when Embedded bean as column with unique constraint --- .../server/ddl/CreateTableColumnVisitor.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/avaje/ebeaninternal/server/ddl/CreateTableColumnVisitor.java b/src/main/java/com/avaje/ebeaninternal/server/ddl/CreateTableColumnVisitor.java index ad9f76793..9992be251 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/ddl/CreateTableColumnVisitor.java +++ b/src/main/java/com/avaje/ebeaninternal/server/ddl/CreateTableColumnVisitor.java @@ -30,6 +30,8 @@ public class CreateTableColumnVisitor extends BaseTablePropertyVisitor { private final CreateTableVisitor parent; + private BeanPropertyAssocOne embedded; + public CreateTableColumnVisitor(CreateTableVisitor parent, DdlGenContext ctx) { this.parent = parent; this.ctx = ctx; @@ -68,6 +70,7 @@ public class CreateTableColumnVisitor extends BaseTablePropertyVisitor { @Override public void visitEmbeddedScalar(BeanProperty p, BeanPropertyAssocOne embedded) { + this.embedded = embedded; visitScalar(p); } @@ -184,7 +187,12 @@ public class CreateTableColumnVisitor extends BaseTablePropertyVisitor { private String createUniqueConstraint(BeanProperty p) { - StringBuilder expr = createUniqueConstraintBuffer(p.getBeanDescriptor().getBaseTable(), p.getDbColumn()); + String baseTable = p.getBeanDescriptor().getBaseTable(); + if (baseTable == null) { + // Embedded bean property that has unique constraint on it + baseTable = embedded.getBeanDescriptor().getBaseTable(); + } + StringBuilder expr = createUniqueConstraintBuffer(baseTable, p.getDbColumn()); expr.append(p.getDbColumn()).append(")"); return expr.toString();