Как сделать список (содержащий объекты) постоянным
Прежде всего, как вы можете видеть, я работаю в 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 ответ
Но, в конце концов, несмотря на настойчивость спортсменов и тренеров, списки, которые у меня есть, отсутствуют.
Некоторые идеи:
Убедитесь, что вы
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);