对JDO的继承

时间:2012-07-04 17:21:46

标签: inheritance netbeans jdo datanucleus

我正在尝试在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>

我已经花了好几个小时在谷歌这里没有回答,也没有回答过。请帮助&gt;。&lt;

编辑:

这是我的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,这反过来导致编译错误。而且我不确定手动更改会解决任何问题。

1 个答案:

答案 0 :(得分:0)

首先,你忽略了提到你正在使用DataNucleus Typesafe API(大概是因为JDO还没有包含它)。

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