繁体   English   中英

如何在Google-app-engine数据库中保存列表?

[英]How can I save a list in google-app-engine database?

我有以下代码无法正常工作。 testprovincia存在于数据库中,partidos变量是一个列表,我确定它不是空的,但也永远不会持久。

mgr = getPersistenceManager();
Query query = mgr.newQuery(Provincia.class);
query.setFilter("name == nameParam");
query.declareParameters("String nameParam");
List<Provincia> results = (List<Provincia>) query.execute("testprovincia");
Provincia prov = results.get(0);

insertPartidos(partidos);

prov.setPartidos(partidos);
mgr.makePersistent(prov);
query.closeAll();
mgr.close();

InsertPartidos方法:

private void insertPartidos(List<Partido> partidos){
    for (Partido partido : partidos) {
        log.info(partido.getName());
        mgr.makePersistent(partido);
    }
}

问题是为什么我永远都看不到我添加到prov变量的列表? 一直都是空的。

这是我的课程:

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Provincia {

    public Provincia(String name) {
        super();
        this.name = name;
    }

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key id;
    @Persistent
    private String name;
    @Persistent(mappedBy = "provincia")
    @Order(extensions = @Extension(vendorName="datanucleus",key="list-ordering", value="name asc"))
    private List<Partido> partidos;

    public Key getId() {
        return id;
    }
    public void setId(Key id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<Partido> getPartidos() {
        return partidos;
    }
    public void setPartidos(List<Partido> partidos) {
        this.partidos = partidos;
    }
}

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Partido {

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key id;
    @Persistent
    private String name;

    @Persistent
    private Provincia  provincia;

    public Partido(){
    }

    public Partido(Key id) {
        super();
        this.id = id;
    }

    public Partido(Key id, String name, Provincia prov) {
        super();
        this.id = id;
        this.name = name;
        this.provincia = prov;
    }

    public Partido(String name, Provincia prov) {
        super();
        this.name = name;
        this.provincia = prov;
    }

    public Key getId() {
        return id;
    }

    public void setId(Key id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Provincia getProvincia() {
        return provincia;
    }

    public void setProvincia(Provincia provincia) {
        this.provincia = provincia;
    }

}

也许使用其他更新方式。 如果已经存在testprovincia,则使用此处描述的方法可以为您解决问题。 与其使用makepersistent,不如使用持久性管理器获取数据并直接对其进行更新。

这也可以使用标准的数据存储的数据库(或NDB)看跌期权,作为解释在这里 您真的需要JDO吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM