【发布时间】:2020-02-05 15:35:49
【问题描述】:
我有两个课程:
@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
我想要一种机制来更新完整的对象,而不仅仅是特定的值。 有人可以帮忙吗?
【问题讨论】:
-
请将您的数据库结构添加为屏幕截图,并指出发生该错误的确切代码行。
标签: java firebase google-cloud-platform google-cloud-firestore