gpt4 book ai didi

java - DataNucleus 可以持久保存使用泛型参数化的抽象基类吗?

转载 作者:行者123 更新时间:2023-11-30 04:43:35 24 4
gpt4 key购买 nike

使用 DataNucleus,我很高兴使用抽象基类为子类提供“长”ID(请注意原始类型)。

当调整 example from JPA 时我想到了参数化基类。目的是支持不同的 ID 类型,例如 String。

@PersistenceCapable
@Inheritance(strategy=InheritanceStrategy.SUBCLASS_TABLE)
@Version(strategy=VersionStrategy.VERSION_NUMBER, column="jdo_version")
public abstract class VersionedIdEntity<P>
implements Serializable {

static final long serialVersionUID = 1L;

@PrimaryKey
@Persistent(valueStrategy=IdGeneratorStrategy.INCREMENT)
private P id;

public P getId() {
return id;
}
}

泛型让我使用包装的 Java 类型“Long”,因此子类声明如下:

public class Account extends VersionedIdEntity<Long>

我切换到新的基类导致出现错误,指出未找到“java.lang.Object”的实现。

org.datanucleus.exceptions.NucleusUserException: Field "VersionedIdEntity.id" is declared as a reference type (interface/Object) but no implementation classes of "java.lang.Object" have been found!

该错误与类型删除有关吗?

其他问题是(1)JPA 如何处理它以及(2)我是否可以将类型 P 限制为 types persistable in DataNucleus ,如:

<? extends PersistableType>

虽然我在其他地方找不到帮助,但这个问题本来可以被问过。在这种情况下,我们将不胜感激。

最佳答案

你的意思是JDO定义了一个实现应该支持这个吗?答案:不。JDO定义了有效的PK类型,什么是“P”?就类而言,它是 Object(即 (java.lang.)Object,因为它没有真正的类型)。 JPA 也没有为此定义它。

关于java - DataNucleus 可以持久保存使用泛型参数化的抽象基类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11658992/

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