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.

This commit is contained in:
Par Winzell
2008-12-09 23:00:50 +00:00
parent cc07817238
commit 7eaaea15e7
@@ -442,29 +442,36 @@ public abstract class BuildVisitor implements ExpressionVisitor
DepotMarshaller<?> marsh = _types.getMarshaller(pClass); DepotMarshaller<?> marsh = _types.getMarshaller(pClass);
_innerClause = true; _innerClause = true;
Set<String> idFields = insertClause.getIdentityFields();
String[] fields = marsh.getColumnFieldNames(); String[] fields = marsh.getColumnFieldNames();
_builder.append("insert into "); _builder.append("insert into ");
appendTableName(insertClause.getPersistentClass()); appendTableName(insertClause.getPersistentClass());
_builder.append(" ("); _builder.append(" (");
for (int ii = 0; ii < fields.length; ii ++) {
if (ii > 0) {
_builder.append(", ");
}
appendLhsColumn(pClass, fields[ii]);
}
_builder.append(") values(");
Set<String> idFields = insertClause.getIdentityFields(); boolean comma = false;
for (int ii = 0; ii < fields.length; ii++) { for (String field : fields) {
if (ii > 0) { if (idFields.contains(field)) {
continue;
}
if (comma) {
_builder.append(", "); _builder.append(", ");
} }
if (idFields.contains(fields[ii])) { comma = true;
_builder.append("DEFAULT"); appendLhsColumn(pClass, field);
} else { }
_builder.append("?"); _builder.append(") values (");
comma = false;
for (String field : fields) {
if (idFields.contains(field)) {
continue;
} }
if (comma) {
_builder.append(", ");
}
comma = true;
_builder.append("?");
} }
_builder.append(")"); _builder.append(")");
} }