2

オブジェクトを永続化しようとすると、この例外がスローされます。間違った型について不平を言いますが、同じ型を期待しています。プロジェクトの名前を dbd2012_p2 から dbd2012_p3 に変更した後、例外が発生し始めました (以前の割り当てからの継続です)。

この例外に関する Google の情報は見つかりませんでした。メタデータ ファイルを調べて、dbd2012_p2 のインスタンスが残っていないことを確認しましたが、困惑しています。

私たちのデータベースは基本的に多対多の関係です: Prova with Tag. Mesura は、いくつかの追加の属性 (アクティビティ、日時、x、y、および z 座標) を使用して関係をモデル化します。

例外

javax.jdo.JDOUserException: The owner field prova of element class dbd2012_p3.Mesura has an incorrect type "dbd2012_p3.Prova". Should be "dbd2012_p3.Prova"
javax.jdo.JDOUserException: The owner field prova of element class dbd2012_p3.Mesura has an incorrect type "dbd2012_p3.Prova". Should be "dbd2012_p3.Prova"
    at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:519)
    at org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:736)
    at org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:756)
...
    at dbd2012_p3.dbd2012_p3.main(dbd2012_p3.java:28)

コード

for (String name : names) {
    for (String seq : seqs) {
        Prova prova = new Prova(name, seq);
        pm.makePersistent(prova); // Exception thrown here
    }
}

Prova.java

@PersistenceCapable
public class Prova {
        @PrimaryKey //OJO
        private String nom_persona = null;
        @PrimaryKey
        private String num_seq = null;
        private Set tagRelations = new HashSet();

        public Prova(String nou_nom_persona, String nou_num_seq) {
                nom_persona = nou_nom_persona;
                num_seq = nou_num_seq;
        }

        public Prova(){}

パッケージ-mysql.orm

これが、テーブルを定義する方法です。

<?xml version="1.0"?>
<!DOCTYPE orm SYSTEM "file:/javax/jdo/orm.dtd">
<orm>
        <package name="dbd2012_p3">
                <class name="Prova" type="application" table="prova">
                        <field name="nom_persona" primary-key="true">
                                <column name="nom_persona" length="45" jdbc-type="VARCHAR"/>
                        </field>
                        <field name="num_seq" primary-key="true">
                                <column name="num_seq" length="45" jdbc-type="VARCHAR"/>
                        </field>
                        <field name="tagRelations" persistence-modifier="persistent" mapped-by="prova">
                                <collection element-type="Mesura" />
                        </field>
                </class>

                <class name="Tag" type="application" table="tag">
                        <field name="codi" primary-key="true">
                                <column name="codi" length="45" jdbc-type="VARCHAR" />
                        </field>
                        <field name="nom">
                                <column name="nom" length="45" jdbc-type="VARCHAR" />
                        </field>
                        <field name="provaRelations" persistence-modifier="persistent" mapped-by="tag">
                                <collection element-type="Mesura" />
                        </field>
                </class>

                <class name="Mesura" type="datastore" table="mesura">
                        <field name="datetime" column="datetime"/>
                        <field name="prova" />
                        <field name="tag" />
                        <field name="activitat" />
                        <field name="x">
                            <column name="x" jdbc-type="DECIMAL" length="3" scale="1" />
                        </field>
                        <field name="y">
                                <column name="y" jdbc-type="DECIMAL" length="3" scale="1" />
                        </field>
                        <field name="z">
                                <column name="z" jdbc-type="DECIMAL" length="3" scale="1" />
                        </field>
                </class>
        </package>
</orm>

注: この課題は、データベースに追加するデータにデータ マイニング技術を適用することに関するものであるため、これを宿題としてタグ付けしていません。プロジェクトの名前を元の名前に戻すだけで、再び機能しますが、例外が本当に私を悩ませています。

4

0 に答える 0