diff --git a/ebean-core/src/main/java/io/ebeaninternal/api/BindParams.java b/ebean-core/src/main/java/io/ebeaninternal/api/BindParams.java index ca813ae14..ec3b6ed05 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/api/BindParams.java +++ b/ebean-core/src/main/java/io/ebeaninternal/api/BindParams.java @@ -167,6 +167,7 @@ public final class BindParams implements Serializable { */ @SuppressWarnings("rawtypes") public void setParameter(int position, Object value) { + assert value != null : "use setNullParameter"; Param p = getParam(position); if (value instanceof Collection) { // use of postgres ANY with positioned parameter @@ -218,6 +219,7 @@ public final class BindParams implements Serializable { * Set a named In parameter that is not null. */ public Param setParameter(String name, Object value) { + assert value != null : "use setNullParameter"; Param p = getParam(name); p.setInValue(value); return p; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistDeferredRelationship.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistDeferredRelationship.java index 279bf6329..30cb469af 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistDeferredRelationship.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/PersistDeferredRelationship.java @@ -40,6 +40,9 @@ public final class PersistDeferredRelationship { // bind the set clause for the importedId int pos = importedId.bind(1, sqlUpdate, assocBean); + if (pos == -1) { + return; // could not bind: TODO: should we log/throw an error? + } // bind the where clause for the bean Object[] idValues = beanDescriptor.idBinder().getIdValues(bean); for (int j = 0; j < idValues.length; j++) { diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/ImportedIdEmbedded.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/ImportedIdEmbedded.java index 7f6c3d96e..ee64f86af 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/ImportedIdEmbedded.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/ImportedIdEmbedded.java @@ -85,6 +85,9 @@ public final class ImportedIdEmbedded implements ImportedId { for (ImportedIdSimple anImported : imported) { if (anImported.owner.isUpdateable()) { Object scalarValue = anImported.foreignProperty.getValue(embedded); + if (scalarValue == null) { + return -1; // could not bind + } update.setParameter(pos++, scalarValue); } } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/ImportedIdSimple.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/ImportedIdSimple.java index fe3e8ce2e..2c844c4a2 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/ImportedIdSimple.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/id/ImportedIdSimple.java @@ -151,6 +151,9 @@ public final class ImportedIdSimple implements ImportedId, Comparable