Syncano Android SDK - поле ссылки в классе объекта

Я хотел бы использовать тип поля "ссылка" в моем объекте класса. Я не уверен, как определить его в Java POJO объект - я пытался установить String,Integer, int, а также объект, который определен в веб-панели мониторинга в качестве ссылочного класса - я получил ошибку при создании такого объекта (однако это видно правильно в веб-панели инструментов):

Response{resultCode=5, httpResultCode=201, error='Error parsing response. com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected an int but was BEGIN_OBJECT at line 1 column 257 path $.userid', httpReasonPhrase='Created', data=null}

И если я поместил туда другой тип объекта, приложение зависло с Field type Xyz is not supported.

Мой Класс Объект:

@SyncanoClass(name = "custom_obj")
public class CustomObj extends SyncanoObject {
    public static final String FIELD_TITLEID = "title";
    public static final String FIELD_USERID = "userid";

    @SyncanoField(name = FIELD_TITLEID)
    public String title;
    @SyncanoField(name = FIELD_USERID)
    public Integer userId;
}

Без установки userId - я получаю успешный ответ.

1 ответ

Решение

Да, мы знаем об этой ошибке и исправлены в ветке поддержки виртуальных таблиц. В следующие выходные должен быть объединен с мастером и опубликован. Мой ответ ниже относится к этой ветке.

Мы решили отказаться от идеи хранить ссылку как Integer и заменить его на SyncanoObject чтобы обеспечить легкий доступ к объекту.

Например, если вы загружаете CustomObj весь внутренний объект (в примере YourSyncanoObject) свернут - это означает, что вы получите свой объект только с идентификатором, без всех других полей. Если вам нужна дополнительная информация об объекте, вы должны вызвать syncanoObject.fetch();

Но если вы хотите расширить объект, мы почти закончим будущее, похожее на виртуальную таблицу, что позволит вам получить свой CustomObj с расширенными внутренними полями объекта syncano.

@SyncanoClass(name = "custom_obj")
public class CustomObj extends SyncanoObject {
    public static final String FIELD_TITLEID = "title";
    public static final String FIELD_USERID = "userid";

    @SyncanoField(name = FIELD_TITLEID)
    public String title;
    @SyncanoField(name = FIELD_USERID)
    public YourSyncanoObject syncanoObject;
}
Другие вопросы по тегам