gpt4 book ai didi

java - DataNucleus、JDO、如何持久化我自己的 List 实现?

转载 作者:行者123 更新时间:2023-11-30 11:48:37 26 4
gpt4 key购买 nike

我已经编写了自己的 java.util.List 实现,现在我想使用 DataNucleus 将它存储在 MySQL 中。我的实现包含一个实现 List 接口(interface)的公共(public)类和一个实现该列表节点的私有(private)类。

当我在 Eclipse 中运行 SchemaTool 时,只会创建用于我的 Node 实现的表,当我运行我的应用程序时,出现以下错误:

Persistent class "a.b.c.util.DtvList" has no table in the database, but the operation requires it. Please check the specification of the MetaData for this class.

Here's the beginning of my List implementing class...

@PersistenceCapable
@Inheritance(strategy=InheritanceStrategy.COMPLETE_TABLE)
public class DtvList<E extends Comparable<E>> implements List {
@Persistent
private DtvListNode first = null;
private DtvListNode last = null;
private int length = 0;
public DtvList(){};

此外,我只有 add(E object) 方法的实现,所有其他方法都会抛出 RuntimeException。这可能是问题所在吗?

PS 我还尝试实现了更多方法,例如 getIterator 和其他方法,我什至尝试编写一个映射插件 (http://www.datanucleus.org/extensions/rdbms_java_types.html) ,但无济于事。 TABLE 不是由数据库中的 SchemaTool 创建的。

PS/2 为 DtvListNode 实现添加了映射类,现在我有一个 DtvList 表,但没有 DtvListNode 表。它仍然无法正常工作。但我仍然得到异常 org.datanucleus.store.exceptions.NoTableManagedException DtvList 表不存在。

最佳答案

我认为 DataNucleus 不支持映射关系的自定义列表实现。

如果您的列表很小并且您的实现可以支持复制构造函数和 List(),您可以映射一个标准列表并实现 LoadCallback 和 StoreCallback 来管理转换。显然,如果您对该列表进行大量持久性操作,它会变得相当困惑......

关于java - DataNucleus、JDO、如何持久化我自己的 List 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8704975/

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