我在数据存储区中存储对象时遇到问题。我有一个对象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();
}
}
有人能看到我错过的东西吗?
答案 0 :(得分: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自动事务设置)。在创建和持久化新的持久实体时,我总是使用事务。如果上述更改无效,您可能想尝试一下。