我有以下代码:
@PersistenceCapable(identityType = IdentityType.APPLICATION,detachable =“true”) 公共类A { @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) @首要的关键 私钥键;
@Persistent
private B b;
@Persistent
private int id;
// ...
}
@PersistenceCapable(identityType = IdentityType.APPLICATION,detachable =“true”) 公共课B { @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) @首要的关键 私钥键;
@Persistent
private int id;
// ...
}
现在我需要做的是检索B的实例,并从A的实例中引用它,如下所示:
B b = DAL.getBById(1); A =新A(); a.setB(B);
当我传递给PersistenceManager的makePersistent()方法时,我不需要做两件事:
1)创建了一个新的B实例 2)参考A使得b为空
有人能告诉我我做错了吗?
谢谢!
答案 0 :(得分:0)
字段值可以包含Serializable类的实例,将实例的序列化值存储在Blob类型的单个属性值中。要告诉JDO序列化该值,该字段使用注释@Persistent(serialized = true)。 Blob值未编入索引,无法在查询过滤器或排序顺序中使用。
这是一个表示文件的简单Serializable类的示例,包括文件内容,文件名和MIME类型。这不是JDO数据类,因此没有持久性注释。
import java.io.Serializable;
public class DownloadableFile implements Serializable {
private byte[] content;
private String filename;
private String mimeType;
// ... accessors ...
}要将Serializable类的实例作为Blob值存储在属性中,请声明一个类型为类的字段,并使用@Persistent(serialized =“true”)注释:
import javax.jdo.annotations.Persistent;
import DownloadableFile;
// ...
@Persistent(serialized = "true")
private DownloadableFile file;
我的情况你可以使用
import java.io.Serializable;
public class B implements Serializable {
private int xx;
....
..........
}
然后在数据类中声明它
@Persistent(serialized = "true")
private B b;