Java 如何使列表(包含对象)持久化
首先,正如您所看到的,我使用Java,特别是NetBeans IDE。 所以,我有一个班上的人,扩展了两个班:教练和运动员 在main中,我创建了一个新的Java 如何使列表(包含对象)持久化,java,jpa,orm,objectdb,Java,Jpa,Orm,Objectdb,首先,正如您所看到的,我使用Java,特别是NetBeans IDE。 所以,我有一个班上的人,扩展了两个班:教练和运动员 在main中,我创建了一个新的ArrayList list=new ArrayList() 然后,我用我创建并持久化的对象填充列表 Trainer tr1= new Trainer("George","White","England",5665); Athlete ath1= new Athlete("Mairy","Willians","Fran
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);
(这些字段分别在培训师和运动员课程的构造函数中定义良好
我也让他们坚持不懈
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);
但最终,尽管运动员和教练们坚持不懈,我列出的名单却并非如此
这就是我的问题开始的地方,我希望这些列表是持久的
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();
但最终,尽管运动员和教练们坚持不懈,我列出的名单却并非如此
一些想法:
- 确保
事务(尽管您提到实体是持久化的)commit
- 如果
和培训师
之间的一对多关联是双向的(可能显示您的实体),请确保正确设置链接的“另一侧”,如下所示:运动员
或者在您的实体中添加方法(在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
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);