gpt4 book ai didi

java - JDO 不获取集合成员字段

转载 作者:行者123 更新时间:2023-11-30 09:57:09 24 4
gpt4 key购买 nike

上课:

class Node implements Serializable
{
private String name;

public String getName { return name; }
public void setName(String val){ name = val; }

public Node(){}
}

@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true")
class NodeBag implements Serializable
{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
Long id;

@Persistent(serialized="true")
private ArrayList<Node> nodes = new ArrayList<Node>();

public String getNodes { return nodes; }
public void setNodes(ArrayList<Node> val){ nodes = val; }

public NodeBag(){}
}

我可以用这个把它保存到数据库

PersistenceManager pm = PMF.getManager();
try
{
pm.makePersistent(newBag);
}
finally
{
pm.close();
}

但是当我加载它的时候

PersistenceManager pm = PMF.getManager();
Query q = pm.newQuery(NodeBag.class);
try
{
List<NodeBag> pipelines = (List<NodeBag>)q.execute();
return nodeBags; // nodeBags[0].nodes is always empty
}
finally
{
q.closeAll();
}

Nodebag.nodes 总是空的!

我错过了什么吗?

提前致谢。

问候,保罗

最佳答案

在返回对象的调用中,您可以使用 FetchPlan 指定要返回的 FetchGroup。参见 JDO docs有关 FetchGroup 选项的更多信息。

您可以通过在 PersistenceManager 中指定要使用的 FetchGroup 来确保获取所有实体。修改后的代码如下:

PersistenceManager pm = PMF.getManager();
pm.getFetchPlan().setGroup(FetchGroup.ALL);
Query q = pm.newQuery(NodeBag.class);
try {
List<NodeBag> pipelines = (List<NodeBag>)q.execute();
return nodeBags; // nodeBags[0].nodes is always empty
} finally {
q.closeAll();
}

关于java - JDO 不获取集合成员字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1956748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com