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,30 +442,37 @@ public abstract class BuildVisitor implements ExpressionVisitor
DepotMarshaller<?> marsh = _types.getMarshaller(pClass);
_innerClause = true;
Set<String> 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) {
boolean comma = false;
for (String field : fields) {
if (idFields.contains(field)) {
continue;
}
if (comma) {
_builder.append(", ");
}
appendLhsColumn(pClass, fields[ii]);
comma = true;
appendLhsColumn(pClass, field);
}
_builder.append(") values (");
Set<String> idFields = insertClause.getIdentityFields();
for (int ii = 0; ii < fields.length; ii++) {
if (ii > 0) {
comma = false;
for (String field : fields) {
if (idFields.contains(field)) {
continue;
}
if (comma) {
_builder.append(", ");
}
if (idFields.contains(fields[ii])) {
_builder.append("DEFAULT");
} else {
comma = true;
_builder.append("?");
}
}
_builder.append(")");
}