У меня есть Java пользовательский объект, который я использую в Firestore для установки продукта.
Это выглядит частично так:
package product.firebaseobjects;
import java.util.List;
import java.util.Map;
public class Product {
private List<String> productcodes;
private Map<String, String> altdescriptions;
private String description;
private Long amount;
private boolean hasimage;
public Product(){
}
public FBProduct(List<String> productcodes, Map<String, String> altdescriptions, String description, Long amount, boolean hasimage) {
this.productcodes = productcodes;
this.altdescriptions = altdescriptions;
this.description = description;
this.amount = amount;
this.hasimage = hasimage;
}
(getters & setters omitted)
Получение выполняется с помощью
DocumentReference docRef = db.collection(PRODUCTS).document(id);
ApiFuture<DocumentSnapshot> future = docRef.get();
DocumentSnapshot document = null;
Product product = null;
try {
document = future.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
if (document.exists()) {
product = document.toObject(Product.class);
}
return product;
Когда я сохраняю этот объект, используя этот код
List<string> productcodes = new ArrayList<>();
productcodes.add("productcode1");
productcodes.add("productcode2");
Map<String, String> alt = new HashMap<>();
alt.put("French","French description");
alt.put("German","German description");
String description = "Description";
Long amount = 1L;
boolean hasimage = false;
Product product = new Product(productcodes, alt, description, amount, hasimage);
ApiFuture<DocumentReference> future = db.collection(PRODUCTS).add(product);
все поля сохраняются в Firestore, кроме поля 'altdescription'. Это поле не должно быть найдено. Во всех примерах в документах используется Map<String, Object>
, который я также попробовал, но без разницы.
В результате поиска я нашел решения, которые используют метод update () с использованием точечной нотации, но тогда вы не используете customobject.
Мой вопрос: как использовать карту в пользовательском объекте Firestore Java. И если это невозможно, каков предпочтительный способ установки, обновления и получения Карт для настраиваемого объекта.