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;
}