code: @SuppressWarnings({ "unchecked", "rawtypes" })
  	@Override
  	protected void onString(String text, String fieldName, JsonParser jp) {
  		log.trace(fieldName + " " + text);
  
  		if (resultStarted && entityStarted) {
  			if (!idFound) {
  				List<java.lang.reflect.Field> fields = ClassUtil.getAnnotatedFields(getEntityInstance().getClass(), Id.class);
  				if (fields.isEmpty() || fields.size() > 1) {
  					throw new ApitraryOrmIdException("Illegal amount of annotated id properties of class " + getEntityInstance().getClass().getName());
  				} else {
  					ClassUtil.setSilent(getEntityInstance(), fields.get(0).getName(), text);
  					idFound = true;
  				}
  			} else if (text != null && idFound) {
  				java.lang.reflect.Field field = ClassUtil.getDeclaredFieldSilent(getEntityInstance().getClass(), fieldName);
  				if (field != null) {
  					if (field.isAnnotationPresent(Reference.class)) {
  						ClassUtil.setSilent(getEntityInstance(), fieldName, ProxyUtil.createLazyProxy(field.getType(), daoSupport, text));
  					} else if (field.isAnnotationPresent(Column.class)) {
  						if (field.isAnnotationPresent(Codec.class)) {
  							Class<? extends com.apitrary.orm.core.codec.Codec> codecClazz = ClassUtil.getFieldAnnotationValue("value", field, Codec.class, Class.class);
  							com.apitrary.orm.core.codec.Codec codec = (com.apitrary.orm.core.codec.Codec) ClassUtil.newInstance(codecClazz);
  							Object value = codec.decode(text);
  
  							ClassUtil.setSilent(getEntityInstance(), fieldName, value);
  						} else {
  							ClassUtil.setSilent(getEntityInstance(), fieldName, text);
  						}
  					}
  				}
  			}
  		}
  	}
docs: {@inheritDoc}