2013-07-03 13 views
9

Wie implementiere ich eine-viele-Beziehung in ORMLite Android?Eins-zu-viele-Beziehung in ORMLite Android

finden Sie das Beispiel

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 Sammlung von A. Ich bin Aufruf dao.create(b);

Nun erstellen i dao von b, da b alle Daten hat. Aber die Tabelle B hat nur mit Daten erstellt, A wird nie erstellt. Bitte kann jemand helfen?

Antwort

14

Jetzt erstelle ich dao von b, da b alle Daten enthält. Aber die Tabelle B hat nur mit Daten erstellt, A wird nie erstellt. Bitte kann jemand helfen?

Richtig. Sie müssen die A Elemente erstellen mit:

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

ORMLite schafft nicht automatisch die für Sie.

Sie können einen Blick auf den Quellcode der foreign-collection example program werfen.

0

Sie müssen das DAO der B-Klasse überschreiben. Wenn also ein Objekt B erstellt oder aktualisiert wird, müssen die Objekte in der Auflistung ebenfalls aktualisiert werden.

Werfen Sie einen Blick auf diese Frage: Collections in ORMLite.

+0

Können Sie das Beispiel bearbeiten und zeigen, wie htis zu erreichen? – Rockin

+0

Wo ist der Code, mit dem Sie den Dao instanziieren? – bogdan

-1

Ich hatte das gleiche Problem. Mein json war wie:

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

i das Problem wie folgt gelöst:

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); 
}