У меня есть следующий класс, который я хочу сохранить в firestore.
public class User extends Model {
@PropertyName("user_auth_id")
public String authUid;
@PropertyName("first_name")
public String firstName;
@PropertyName("last_name")
public String lastName;
@PropertyName("picture_url")
public String pictureUrl;
@PropertyName("email")
public String email;
@PropertyName("companies")
public ArrayList<UserCompany> companies;
public User() {}
}
public class UserCompany extends Model {
public String name;
public String role;
public String position;
public UserCompany() {
super();
}
public UserCompany(Company company, String role, String position) {
this();
name = company.name;
this.role = role;
this.position = position;
}
public Map<String, Object> toObject() {
Map<String, Object> object = new HashMap<>();
object.put("id", id);
object.put("name", name);
object.put("role", role);
object.put("position", position);
return object;
}
}
@IgnoreExtraProperties
public class Model {
@Exclude
public String id;
public <T extends Model> T withId(@NonNull final String id) {
this.id = id;
return (T) this;
}
}
И я хочу использовать транзакцию, чтобы обновить запись пользователя с помощью только что созданного списка компаний.(appUser instanceOf User)
transaction.update(userRef, "companies", appUser.companies);
Если я это сделаю ... Я получу
Неверные данные.Неподдерживаемый тип: ro.exemple.model.UserCompany
Как я могу сериализовать объект User, чтобы я мог десериализовать его как таковой
User appUser = queryDocumentSnapshots.getDocuments().get(0).toObject(User.class);
Где queryDocumentSnapshots является результатомзапрос в моей базе данных firestore.
Я знаю, что могу перейти с ArrayList на HashMap, но я хочу сохранить список и попытаться сериализовать и десериализовать его, чтобы получить в firestore массив объектов.