Как сделать список (содержащий объекты) постоянным - PullRequest
0 голосов
/ 09 ноября 2010

Прежде всего, как вы можете видеть, я работаю на Java и, в частности, в IDE NetBeans. Итак, у меня есть класс Person, который расширяет два класса: Trainer и Athlete.

В основном я создаю новый 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);

Но, в конце концов, несмотря на настойчивость спортсменов и тренеров, у меня нет списков.

Вот где начинается моя проблема, я хочу, чтобы эти списки были постоянными.

Здесь эти списки работают и проверены, и все в порядке, но они хороши для использования на уровне Java, а не на уровне ObjectDB.

Должен ли я начать все сначала?

Кто-нибудь может мне помочь с этим парнем? Мне действительно нужна помощь, это серьезно.

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();

1 Ответ

0 голосов
/ 09 ноября 2010

Но, в конце концов, несмотря на настойчивость спортсменов и тренеров, у меня нет списков.

Некоторые идеи:

  • Убедитесь, что вы commit транзакции (хотя вы упомянули, что сущности сохраняются).

  • Если ваша связь один ко многим между Trainer и Athlete является двунаправленной (возможно, покажите ваши объекты), убедитесь, что правильно установлена ​​«другая» сторона ссылки , вот так:

    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);
    
...