2010-11-09 81 views
0

首先,您可以看到,我使用的是Java,特別是NetBeans IDE。 所以,我有一個班級人員,擴展兩個類:培訓師和運動員。如何創建一個列表(包含對象)persistent

在主,我創建了一個新的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(); 

回答

0

但最終,儘管運動員和培訓人員堅持不懈的進口,我有名單都沒有。

一些想法:

  • 確保您commit交易(雖然你提到實體持續)。

  • 如果您一對多協會和Athlete之間Trainer是雙向的(也許顯示您的實體),請務必正確設置鏈接的「其他」的一面,就像這樣:

    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); 
    
+0

謝謝,看起來不錯,而且很少工作,我必須要完美。非常感謝Pascal Thivent!順便說一句,跆拳道/分鐘度量好笑話。 :)))) – user501625 2010-11-09 10:20:26

相關問題