0

JDO(EclipseではなくNetBeans。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>

私はこれに何時間も費やしてきましたが、Googleでもこれまでも答えはありませんでした。助けてください>。<

編集:

これが私の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にはまだそれが含まれていないためです)。

次に、DataNucleus SVNには、タイプセーフクラスを継承し、問題のないテストがあります。したがって、これらのQTestModel1 / QTestModel2クラスの(生成された)ソースコードを調べて、問題をデバッグすることをお勧めします。

于 2012-07-04T18:53:37.757 に答える