0

我正在尝试在 JDO 上编写一个简单的继承(NetBeans,而不是 Eclipse。而不是 GAE)。这很简单:

@PersistenceCapable
@Inheritance(strategy=InheritanceStrategy.NEW_TABLE)
public class TestModel1 {

}

@PersistenceCapable
@Inheritance(strategy=InheritanceStrategy.NEW_TABLE)
public class TestModel2 extends TestModel1 {

}

但是当我尝试构建它时出现以下错误

type com.ncr.model.QTestModel1 does not take parameters
public class QTestModel2 extends com.ncr.model.QTestModel1<TestModel2> implements PersistableExpression<TestModel2>


com.ncr.model.QTestModel2 is not abstract and does not override abstract method jdoVersion() in org.datanucleus.query.typesafe.PersistableExpression
public class QTestModel2 extends com.ncr.model.QTestModel1<TestModel2> implements PersistableExpression<TestModel2>

我一直在这上面花了几个小时,在谷歌和以前都没有答案。请帮忙>.<

编辑:

这是我的 QClass 结果

public class QTestModel1 extends org.datanucleus.jdo.query.PersistableExpressionImpl<TestModel1> implements PersistableExpression<TestModel1>
{
    public static final QTestModel1 jdoCandidate = candidate("this");

    // not important
}

public class QTestModel2 extends com.ncr.model.QTestModel1<TestModel2> implements PersistableExpression<TestModel2>
{
    public static final QTestModel2 jdoCandidate = candidate("this");

    // not important
}

它在这里失败:

public class QTestModel2 extends com.ncr.model.QTestModel1<TestModel2> implements PersistableExpression<TestModel2>

我不知道 Netbeans 是如何生成扩展 QTestModel1 的 QTestModel2 从而导致编译错误的。而且我不确定手动更改是否会解决任何问题。

4

1 回答 1

0

首先,您忽略了提及您正在使用 DataNucleus Typesafe API(可能是因为 JDO 还没有包含该 API)。

其次,DataNucleus SVN 的测试具有类型安全类的继承并且没有问题。因此,建议您通过查看那些 QTestModel1/QTestModel2 类的(生成的)源代码来调试您的问题。

于 2012-07-04T18:53:37.757 回答