2013-07-03 12 views
9

Come si implementa la relazione one-many in ORMLite Android?Relazione One-To-Many in ORMLite Android

si prega di trovare l'esempio

public class A { 
private String name; 
    @DatabaseField (foreign = true, foreignAutoRefresh = true, columnName = "A") 
    private B b; 
    @DatabaseField(columnName = "author") 
    private String authorName; 
} 

public class B { 
    @DatabaseField(generatedId = true, columnName = "id") 
    private long id; 
    @DatabaseField(columnName = "name") 
    private String name; 
    @ForeignCollectionField 
    Collection<A> aees; 
} 

B ha collezione di A. Chiamo dao.create(b);

Ora creo dao di B, in quanto b dispone di tutti i dati. Ma la tabella B è stata creata solo con i dati, A non viene mai creata. Gentilmente qualcuno potrebbe aiutare?

risposta

14

Ora creo il dao di b, dato che b ha tutti i dati. Ma la tabella B è stata creata solo con i dati, A non viene mai creata. Gentilmente qualcuno potrebbe aiutare?

Diritto. È necessario creare le A elementi utilizzando:

for (A a : b.aees) { 
    aDao.create(a); 
} 

ORMLite non crea automaticamente quelli per voi.

È possibile dare un'occhiata al codice sorgente di foreign-collection example program.

0

È necessario sovrascrivere il DAO della classe B, quindi quando un oggetto B viene creato o aggiornato, gli oggetti nella raccolta devono essere aggiornati.

Dai un'occhiata a questa domanda: Collections in ORMLite.

+0

Puoi modificare l'esempio e mostrare come ottenere htis? – Rockin

+0

dov'è il codice in cui istanziate il dao? – bogdan

-1

mi trovavo di fronte allo stesso problema. La mia era come JSON:

{ 
    "parent":{ 
      "name":"ABC", 
      "children":[ 
          {"childName":"1"}, 
          {"childName":"2"}, 
          {"childName":"3"} 
         ] 
      } 
} 

Ho risolto il problema in questo modo:

Parent parent = new Parent(); 
parent.setName("ABC"); 

while(get children one by one from json data) 
{ 
    childrenArray.add(new Child(its Name)); 
} 

parentDAO.create(parent); 

for(Child child : childrenArray) 
{ 
    child.setParent(parent); 
    childDAO.create(child); 
}