У меня есть два класса :
@Data
public static class Person {
private String id;
private String value;
private Address address;
}
@Data
public static class Address {
private String add1;
private String add2;
}
@Test
void name2() throws ExecutionException, InterruptedException {
final Person p = new Person();
p.setId("2FEpIFGqH7izWJ1ydfaKtg");
p.setValue("some-value");
final Address address = new Address();
address.setAdd1("Add 1");
address.setAdd2("Add 2");
p.setAddress(address);
final Map<String, Object> params = new HashMap<>();
params.put("address", address);
firestore.collection("test").document("2FEpIFGqH7izWJ1ydfaKtg").update(params).get();
// firestore.collection("test").document("2FEpIFGqH7izWJ1ydfaKtg").set(params, SetOptions.merge()).get(); This also doesn't works, I get same error.
}
Я получаю следующее ошибка при запуске этого кода:
com.google.cloud.firestore.FirestoreException: Cannot convert CustomerRepositoryTest.Address(add1=Add 1, add2=Add 2) to Firestore Value
at com.google.cloud.firestore.FirestoreException.invalidState(FirestoreException.java:51)
at com.google.cloud.firestore.UserDataConverter.encodeValue(UserDataConverter.java:178)
at com.google.cloud.firestore.DocumentSnapshot.fromObject(DocumentSnapshot.java:89)
at com.google.cloud.firestore.UpdateBuilder.performUpdate(UpdateBuilder.java:513)
at com.google.cloud.firestore.UpdateBuilder.update(UpdateBuilder.java:347)
at com.google.cloud.firestore.DocumentReference.update(DocumentReference.java:231)
ОднакоЯ могу обновить частичное значение настройки данных для add1 , обратившись к документу по пути: /test/<ID>/address.add1
Я хочу, чтобы механизм обновил весь объект а не просто конкретное значение. Может кто-нибудь помочь, пожалуйста?