From 7eaaea15e7fb92bd00c8719613e990939ffb3725 Mon Sep 17 00:00:00 2001 From: Par Winzell Date: Tue, 9 Dec 2008 23:00:50 +0000 Subject: [PATCH] Instead of enumerating columns for which values will be auto-generated and supplying magical DEFAULT arguments for them, simply don't include those columns in the insert. --- .../samskivert/depot/impl/BuildVisitor.java | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/src/java/com/samskivert/depot/impl/BuildVisitor.java b/src/java/com/samskivert/depot/impl/BuildVisitor.java index 8e7a8e7..9826565 100644 --- a/src/java/com/samskivert/depot/impl/BuildVisitor.java +++ b/src/java/com/samskivert/depot/impl/BuildVisitor.java @@ -442,29 +442,36 @@ public abstract class BuildVisitor implements ExpressionVisitor DepotMarshaller marsh = _types.getMarshaller(pClass); _innerClause = true; + Set idFields = insertClause.getIdentityFields(); String[] fields = marsh.getColumnFieldNames(); _builder.append("insert into "); appendTableName(insertClause.getPersistentClass()); _builder.append(" ("); - for (int ii = 0; ii < fields.length; ii ++) { - if (ii > 0) { - _builder.append(", "); - } - appendLhsColumn(pClass, fields[ii]); - } - _builder.append(") values("); - Set idFields = insertClause.getIdentityFields(); - for (int ii = 0; ii < fields.length; ii++) { - if (ii > 0) { + boolean comma = false; + for (String field : fields) { + if (idFields.contains(field)) { + continue; + } + if (comma) { _builder.append(", "); } - if (idFields.contains(fields[ii])) { - _builder.append("DEFAULT"); - } else { - _builder.append("?"); + comma = true; + appendLhsColumn(pClass, field); + } + _builder.append(") values ("); + + comma = false; + for (String field : fields) { + if (idFields.contains(field)) { + continue; } + if (comma) { + _builder.append(", "); + } + comma = true; + _builder.append("?"); } _builder.append(")"); }