private void insert(final Record record) throws SQLException { final PathName typePath = record.getPathName(); final RecordDefinition recordDefinition = getRecordDefinition(typePath); flushIfRequired(recordDefinition); final String idFieldName = recordDefinition.getIdFieldName(); final boolean hasId = idFieldName != null; final GlobalIdProperty globalIdProperty = GlobalIdProperty.getProperty(record); if (globalIdProperty != null) { if (record.getValue(globalIdProperty.getFieldName()) == null) { record.setValue(globalIdProperty.getFieldName(), UUID.randomUUID().toString()); } } final boolean hasIdValue = hasId && record.getValue(idFieldName) != null; if (!hasId || hasIdValue) { insert(record, typePath, recordDefinition); } else { insertSequence(record, typePath, recordDefinition); } record.setState(RecordState.PERSISTED); this.recordStore.addStatistic("Insert", record); }