appengine数据存储区中的空列表:java vs python

Lau*_*ire 11 python java google-app-engine datanucleus

我在AppEngine中有以下java模型类:

public class Xyz ... {
    @Persistent
    private Set<Long> uvw;
}
Run Code Online (Sandbox Code Playgroud)

在Java中使用uvw保存对象Xyz时,我得到一个" null "字段(如appengine数据存储区查看器中所列).当我尝试在python中加载相同的对象(通过remote_api)时,由以下python模型类定义:

class Xyz(db.Model):
    uvw = db.ListProperty(int)
Run Code Online (Sandbox Code Playgroud)

我得到一个" BadValueError:属性uvw是必需的 ".

在python中使用空的uvw列表保存同一类的另一个对象时,数据存储区查看器将打印" 缺少 "字段.

显然空列表存储处理在Java和python之间有所不同,并导致"不兼容"对象.

因此我的问题是:有没有办法,或者:

  • 强制Java将空列表存储为"缺失"字段,
  • 强制Python在加载对象时优雅地接受"null"列表作为空列表?

或者关于如何处理两种语言的空列表字段的任何其他建议.

谢谢你的回答!

Cla*_*ini 2

如果您为 Python 属性分配默认值,它应该可以工作:

uvw = db.ListProperty(int, default=[])
Run Code Online (Sandbox Code Playgroud)