gpt4 book ai didi

java - 使用 JPL 在 Java 中的 BDB 中存储子类

转载 作者:太空宇宙 更新时间:2023-11-04 14:33:46 25 4
gpt4 key购买 nike

我正在尝试使用 JPL 将我的对象持久保存到一个简单的 BDB 中。问题是,如果我尝试在主索引中存储子类,则会收到错误(如下)。

子类在数据方面没有任何不同,但它们在功能上不同,我希望子类成为编码的实例类型。如果必须的话,那么键可以包含有问题的类,我可以自己实例化它

也许我需要每个子类一个索引?但这似乎不对,而且肯定会使查找过程变得复杂。

示例:

@Test
public void testStoreEntity() throws Exception {
Random r = new Random();
File directory = new File("C:\\Users\\chribong\\development\\code\\edifecs\\engineering\\platform\\icd-code-factory\\src\\test\\data\\" + r.nextInt(1000));
directory.mkdirs();
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
envConfig.setTransactional(true);
Environment env = new Environment(directory, envConfig);

StoreConfig storeConfig = new StoreConfig();
storeConfig.setAllowCreate(true);
storeConfig.setTransactional(true);
EntityStore store = new EntityStore(env, "PersonStore", storeConfig);

PrimaryIndex<Key,AbstractBdbIcdCode> index = store.getPrimaryIndex(Key.class,AbstractBdbIcdCode.class);

index.put(new AbstractBdbIcdCode(10,"foo", ICDCode.Type.DIAGNOSIS,".*"));
index.put(new BdbIcd10DiagnosisCode("A000")); // error here
// java.lang.IllegalArgumentException: Class could not be loaded or is not persistent

}

类(class)

@Entity
public class AbstractBdbIcdCode implements ICDCode {

@PrimaryKey
private Key pk;

protected String description;

protected Set<String> concepts = new TreeSet<>();
protected Set<String> antiConcepts = new TreeSet<>();
protected Set<String> similarConcepts = new TreeSet<>();
}

@Persistent
public class Key {

@KeyField(1)
private ICDCode.Type type;

@KeyField(2)
private int version;
@KeyField(3)
private String code;

public Key() {
}
}

public class BdbIcd10DiagnosisCode extends AbstractBdbIcdCode implements ICD10DiagnosisCode{


private transient String category;

private transient String etiology;

private transient String location;

private String laterality;
protected String extension;
}

最佳答案

好吧,我明白了:

子类必须是

@Persistent
public class BdbIcd10DiagnosisCode extends AbstractBdbIcdCode implements ICD10DiagnosisCode{
}

关于java - 使用 JPL 在 Java 中的 BDB 中存储子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828715/

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