首先,如您所见,我在Java,特别是在Netbeans IDE工作。因此,我有一个班级的人可以扩展两个课程:培训师和运动员。

总之,我创建了一个新的 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 交易(尽管您提到实体持续存在)。

  • 如果你的 一对一 之间的关联 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);
    
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top