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:
@@ -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(")");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user