public void toStorageType(Object value, Map<String, Object> valuesRef) {
      Object[] values = null;

      if (isRelation(getType())) {
        if (value != null) {
          @SuppressWarnings("unchecked")
          AnnotatedRecordMapper<Object> mapper = (AnnotatedRecordMapper<Object>) create(getType());

          values = mapper.getIds(value);
        }
      } else if (isEmbedded()) {
        if (value != null) {
          values = getEmbeddedFields(value);
        }
      } else {
        values = new Object[] {dataTypeConverter.toStorageType(value)};
      }

      if (values != null) {
        for (int i = 0; i < names.length; i++) {
          valuesRef.put(names[i], values[i]);
        }
      } else {
        for (String columnName : names) {
          valuesRef.put(columnName, null);
        }
      }
    }