![](/img/trans.png)
[英]How to save a List of persistent objects bound to another objects with Hibernate
[英]How to make a list (containing of objects) persistent
首先,如您所见,我使用Java,特别是NetBeans IDE。 因此,我有一个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();
但是最后,尽管运动员和培训师坚持不懈,但我所拥有的名单却没有。
一些想法:
确保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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.