gpt4 book ai didi

java - JDO - 嵌入类中的 HashMap

转载 作者:行者123 更新时间:2023-12-01 05:45:19 29 4
gpt4 key购买 nike

您能否将 HashMap 存储在 App Engine 上的嵌入式类中?我有以下类(class):

@Persistent(serialized = "true")
@Embedded
private Stats stats;

@PersistenceCapable
@EmbeddedOnly
public static class Stats implements Serializable {
private static final long serialVersionUID = 1L;
@Persistent(serialized = "true", defaultFetchGroup="true")
private Map<String, Integer> requests;

public Stats() {
requests = new HashMap<String, Integer>();
}
}

但是,当我尝试将项目添加到 HashMap 并保留它时,出现以下错误:

指定的类 com.google.appengine.api.datastore.Blob 不可持久

我知道您可以在“普通”类中成功使用 HashMap,但它们也可以在嵌入式类中使用吗?

谢谢

最佳答案

我还没有尝试过嵌入类,但我的 JDO 对象内的 map 需要在包含的类上添加额外的 FetchGroup 注释...

    @SuppressWarnings("serial

")
@PersistenceCapable(identityType=IdentityType.APPLICATION, detachable="true")
@FetchGroup(name="QueryAggregationJobJDO", members={
@Persistent(name="appName", recursionDepth=-1),
etc....
public class QueryAggregationJobJDO extends AggregationJobJDO implements SystemObject {
@Persistent(serialized="true") // this is string of app names and a count for each name found
public Map< String, Long > appName = new HashMap<String, Long>();

在打开 DataManager 时,我们必须使用 getFetchPlan() 添加此类...

@Override
public boolean open() {
DataAreaManager dataAreaManager = new DataAreaManager();
dataAreaManager.setDataArea(VERSION_DATA_AREA);

if ((pm == null) || (pm.isClosed())) {

pm = PMF.get(type).getPersistenceManager();
pm.getFetchPlan().addGroup("TouchActiveUserJDO");
pm.getFetchPlan().addGroup("UserRoleJDO");
pm.getFetchPlan().addGroup("QueryAggregationJobJDO");

关于java - JDO - 嵌入类中的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6117495/

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