0

我在数据存储中存储对象时遇到问题。我有一个我正在尝试存储的对象 MyObject,但是当代码执行时没有任何反应。我去查看数据存储仪表板,但 MyObject 不存在。没有异常被抛出,也没有错误。

这是我的对象

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

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;

@Persistent
String name;

@Persistent
String beta;

@Persistent
double loc;


public MyObject(String name1){
    name = name1;
}

//getters and setters
}

这是存储对象的代码

public static void saveMyObject(MyObject a)throws Exception{
    PersistenceManager pm = PMF.get().getPersistenceManager();
    try{
        pm.makePersistent(a);
    }
    catch(Exception e){
        throw e;
    }
    finally{
        pm.close();
    }
}

谁能看到我错过了什么?

4

1 回答 1

0

看起来您正在使用 JDO,因此您可能想要添加JDO标签或在某处提及...。

我会替换

try
{
  pm.makePersistent(a);
}

try
{
  MyObject myObj = new MyObject(a.getName());    // or whatever the getter is
  myObj.setField2(a.getField2());                // Copy 1 data member from a
  ...                                            // Make a MyObject.copy(...) method?
  pm.makePersistent(myObj);
}

关键是 JDO 使用增强:在 Java 主编译之后插入的魔术字节码。我在增强的生命周期(“范围”)内操作我的持久实体对象,以使 JDO 工作。

我还使用事务进行写作(我不知道您的 JDO 自动事务设置)。在创建和持久化新的持久实体时,我总是使用事务。如果上述更改不起作用,您可能想尝试一下。

于 2012-06-11T11:09:24.143 回答