protected void updateObjectAndRowWithSequenceNumber() throws DatabaseException {
WriteObjectQuery writeQuery = getWriteObjectQuery();
Object object = writeQuery.getObject();
ClassDescriptor descriptor = writeQuery.getDescriptor();
ObjectBuilder objectBuilder = descriptor.getObjectBuilder();
AbstractSession session = writeQuery.getSession();
Object sequenceValue = objectBuilder.assignSequenceNumber(object, session);
if (sequenceValue == null) {
return;
}
Vector primaryKey = objectBuilder.extractPrimaryKeyFromObject(object, getSession());
writeQuery.setPrimaryKey(primaryKey);
DatabaseField sequenceNumberField = descriptor.getSequenceNumberField();
AbstractRecord modifyRow = getModifyRow();
// Update the row.
modifyRow.put(sequenceNumberField, sequenceValue);
if (descriptor.hasMultipleTables()) {
objectBuilder.addPrimaryKeyForNonDefaultTable(modifyRow, object, session);
}
// Update the changeSet if there is one.
if (session.isUnitOfWork()) {
ObjectChangeSet objectChangeSet = writeQuery.getObjectChangeSet();
if ((objectChangeSet == null) && (((UnitOfWorkImpl)session).getUnitOfWorkChangeSet() != null)) {
objectChangeSet = (ObjectChangeSet)((UnitOfWorkImpl)session).getUnitOfWorkChangeSet().getObjectChangeSetForClone(object);
}
if (objectChangeSet != null) {