我正在尝试在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,这反过来导致编译错误。而且我不确定手动更改会解决任何问题。
答案 0 :(得分:0)
首先,你忽略了提到你正在使用DataNucleus Typesafe API(大概是因为JDO还没有包含它)。
其次,DataNucleus SVN的测试具有类型安全类的继承并且没有问题。因此建议您通过查看那些QTestModel1 / QTestModel2类的(生成的)源代码来调试您的问题。