2013-07-03 12 views
9

Jak zaimplementować relację jeden-wiele w ORMLite Android?Relacja jeden do wielu w ORMLite Android

znajdą przykładzie

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 posiada zbiór A. Wołam dao.create(b);

Teraz tworzę dao B, ponieważ b zawiera wszystkie dane. Ale tabela B stworzyła tylko dane, A nigdy nie jest tworzone. Czy ktoś mógłby pomóc?

Odpowiedz

14

Teraz tworzę dao b, ponieważ b ma wszystkie dane. Ale tabela B stworzyła tylko dane, A nigdy nie jest tworzone. Czy ktoś mógłby pomóc?

Dobrze. Trzeba stworzyć A przedmiotów przy użyciu:

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

ORMLite nie tworzy automatycznie te dla Ciebie.

Możesz rzucić okiem na kod źródłowy z foreign-collection example program.

0

Musisz zastąpić DAO klasy B, więc gdy obiekt B zostanie utworzony lub zaktualizowany, obiekty w kolekcjach również zostaną zaktualizowane.

Proszę spojrzeć na to pytanie: Collections in ORMLite.

+0

można edytować przykład i pokazać jak osiągnąć htis? – Rockin

+0

gdzie jest kod, w którym tworzysz dao? – bogdan

-1

ja stoi ten sam problem. Moje json było jak:

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

i problem został rozwiązany tak:

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