如何不更新 Ref'ed 对象?
How do I not update the Ref'ed object?
设计:
- 实体 A、B 和 C
- C 在 B 中被引用,B 被引用并且 A
- 三个都是单独创建的
- 检索A时,同时检索B和C
问题:
当尝试保存更新后的 A 时,我收到...此错误:
更新 Sticky:400 错误请求时收到 IOException
{
"code": 400,
"errors":[
{
"domain": "global",
"message": "com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: You cannot create a Key for an object with a null @Id. Object was com.example.entity_C@db12bd5 (through reference chain: com.example.entity_A[\"所有者\"]->com.example.entity_B[\"myC\"])",
"reason": "badRequest"
}
],
"message": "com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: You cannot create a Key for an object with a null @Id. Object was com.example.entity_C@db12bd5 (through reference chain: com.example.entity_A[\"所有者\"]->com.example.entity_B[\"myC\"])"
}
不幸的是Java总是通过引用传递,意味着任何对象A = B,比起你试图改变B,A也会改变,唯一的方法是创建新的对象A =新对象();然后你将对象B的内容复制到对象A,会是这样的
int someInt = 5;
Object B = new Object(someInt);
class 对象的构造函数采用 "someInt" 参数。
class Object {
int j;
Object(Int i)
{
this.j=i;
}
int getInt()
{
return j;
}
然后你创建 A 并使 A 的内容与 B 的内容相等
Object A = new Object(B.getInt());
我终于解决了这个问题...显然,我没有为我的@Id字段设置方法,所以自动生成的客户端库没有如何在客户端库端设置值。
设计:
- 实体 A、B 和 C
- C 在 B 中被引用,B 被引用并且 A
- 三个都是单独创建的
- 检索A时,同时检索B和C
问题: 当尝试保存更新后的 A 时,我收到...此错误:
更新 Sticky:400 错误请求时收到 IOException { "code": 400, "errors":[ { "domain": "global", "message": "com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: You cannot create a Key for an object with a null @Id. Object was com.example.entity_C@db12bd5 (through reference chain: com.example.entity_A[\"所有者\"]->com.example.entity_B[\"myC\"])", "reason": "badRequest" } ], "message": "com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: You cannot create a Key for an object with a null @Id. Object was com.example.entity_C@db12bd5 (through reference chain: com.example.entity_A[\"所有者\"]->com.example.entity_B[\"myC\"])" }
不幸的是Java总是通过引用传递,意味着任何对象A = B,比起你试图改变B,A也会改变,唯一的方法是创建新的对象A =新对象();然后你将对象B的内容复制到对象A,会是这样的
int someInt = 5;
Object B = new Object(someInt);
class 对象的构造函数采用 "someInt" 参数。
class Object {
int j;
Object(Int i)
{
this.j=i;
}
int getInt()
{
return j;
}
然后你创建 A 并使 A 的内容与 B 的内容相等
Object A = new Object(B.getInt());
我终于解决了这个问题...显然,我没有为我的@Id字段设置方法,所以自动生成的客户端库没有如何在客户端库端设置值。