0

まず、ご覧のとおり、私は Java で作業しており、具体的には NetBeans IDE で作業しています。したがって、Trainer と Athlete の 2 つのクラスを拡張するクラス Person があります。

主に、私は新しいものを作成しますArrayList list = new ArrayList();

次に、作成して永続化したオブジェクトでリストを埋めます。

Trainer tr1=        new Trainer("George","White","England",5665);
Athlete ath1=       new Athlete("Mairy","Willians","France",1,'f',"21/3/1988",68,172,"France");
list.add(ath1);
Athlete ath2=new Athlete("Iggy","Black","USA",2,'f',"10/4/1988",70,175,"U.S.A.");
list.add(ath2);
tr1.setAthletes(list);

(これらのフィールドは、それぞれクラスのトレーナーとアスリートのコンストラクターで明確に定義されています。

また、それらを永続化します。

em2.persist(tr1);
em2.persist(ath1);
em2.persist(ath2);

しかし、結局のところ、アスリートとトレーナーが固執しているにもかかわらず、私が持っているリストはそうではありません.

それが私の問題の始まりです。これらのリストを永続的にしたいのです。

ここで、これらのリストは機能し、テストされており、問題はありませんが、ObjectDB レベルではなく Java レベルで使用することをお勧めします。

最初からやり直すべきですか?

この人たちと一緒に私を助けてくれる人はいますか? 私は本当に助けが必要です、それは深刻です。

PS: もちろん、次のような必要なインポートを行いました。

import javax.persistence.*;
import java.util.*;

EntityManagerFactory emf2 = Persistence.createEntityManagerFactory("$objectdb/db/personas2.odb");
EntityManager em2 = emf2.createEntityManager();
em2.getTransaction().begin();
em2.close();
emf2.close();
4

1 に答える 1

0

しかし、結局のところ、アスリートとトレーナーが固執しているにもかかわらず、私が持っているリストはそうではありません.

いくつかのアイデア:

  • トランザクションであることを確認してくださいcommit(エンティティは永続化されていると述べましたが)。

  • との間の1対多の関連付けが双方向の場合 (おそらくエンティティを表示する場合)、次のようにリンクの「反対側」を正しく設定してください。TrainerAthlete

    Trainer tr1 = new Trainer("George","White","England",5665);
    Athlete ath1 = new Athlete("Mairy","Willians","France",1,'f',"21/3/1988",68,172,"France");
    ath1.setTrainer(tr1); // set the other side of the link
    list.add(ath1);
    ...
    tr1.setAthletes(list);
    

    またはエンティティにメソッドを追加します(Trainerここにあります):

    public void addToAthletes(Athlete athlete) {
        athlete.setTrainer(this);
        this.athletes.add(athlete);
    }
    

    上記の行を次のように置き換えます。

    Trainer tr1 = new Trainer("George","White","England",5665);
    Athlete ath1 = new Athlete("Mairy","Willians","France",1,'f',"21/3/1988",68,172,"France");
    tr1.addToAthletes(ath1);
    
于 2010-11-09T09:42:51.113 に答える