docs: private void assignDataType(DatabaseType databaseType, DataPersister dataPersister) throws SQLException {
  		dataPersister = databaseType.getDataPersister(dataPersister, this);
  		this.dataPersister = dataPersister;
  		if (dataPersister == null) {
  			if (!fieldConfig.isForeign() && !fieldConfig.isForeignCollection()) {
  				// may never happen but let's be careful out there
  				throw new SQLException("Data persister for field " + this
  						+ " is null but the field is not a foreign or foreignCollection");
  			}
  			return;
  		}
  		this.fieldConverter = databaseType.getFieldConverter(dataPersister, this);
  		if (this.isGeneratedId && !dataPersister.isValidGeneratedType()) {
  			StringBuilder sb = new StringBuilder();
  			sb.append("Generated-id field '").append(field.getName());
  			sb.append("' in ").append(field.getDeclaringClass().getSimpleName());
  			sb.append(" can't be type ").append(dataPersister.getSqlType());
  			sb.append(".  Must be one of: ");
  			for (DataType dataType : DataType.values()) {
  				DataPersister persister = dataType.getDataPersister();
  				if (persister != null && persister.isValidGeneratedType()) {
  					sb.append(dataType).append(' ');
  				}
  			}
  			throw new IllegalArgumentException(sb.toString());
  		}
  		if (fieldConfig.isThrowIfNull() && !dataPersister.isPrimitive()) {
  			throw new SQLException("Field " + field.getName() + " must be a primitive if set with throwIfNull");
  		}
  		if (this.isId && !dataPersister.isAppropriateId()) {
  			throw new SQLException("Field '" + field.getName() + "' is of data type " + dataPersister
  					+ " which cannot be the ID field");
  		}
  		this.dataTypeConfigObj = fieldConverter.makeConfigObject(this);
  		String defaultStr = fieldConfig.getDefaultValue();
  		if (defaultStr == null) {
  			this.defaultValue = null;
  		} else if (this.isGeneratedId) {
  			throw new SQLException("Field '" + field.getName() + "' cannot be a generatedId and have a default value '"
  					+ defaultStr + "'");
  		} else {
  			this.defaultValue = this.fieldConverter.parseDefaultString(this, defaultStr);
  		}
  	}