2013-07-15 10 views
8

Mimo że to pytanie dotyczy ActiveAndroid, każdy, kto zna ORM, może prawdopodobnie odpowiedzieć na to pytanie.Aktywna relacja wiele-do-wielu z Androidem

ActiveAndroid wydaje się nie dawać sposobu na tworzenie relacji wielu do wielu po wyjęciu z pudełka. Co znalazłem w poszukiwaniu rozwiązania było to GitHub problem: https://github.com/pardom/ActiveAndroid/issues/46

Rozumiem, że jest to wyraźnie tworzenia tabeli związek, ale nie rozumiem, w jaki sposób dodaje się część ma robić coś pożytecznego:

public List<Foo> foos() { 
    return getMany(Foo.class, "FooBar"); 
} 
public List<Bar> bars() { 
    return getMany(Bar.class, "FooBar"); 
} 

Spowoduje to zapytanie takie jak SELECT * FROM Foo where Foo.FooBar = FooBar.Id;. Zwróci to najwyżej jeden wiersz Foo. Czy czegoś brakuje?

Nie potrzebujesz zapytania związanego z łączeniem?

+0

Oto moja odpowiedź na innym miejscu: [Activeandroid wiele-do-wielu] (http: // stackoverflow .pl/pytania/26207948/activeandroid-many-to-many-relationship/39203783 # 39203783) –

Odpowiedz

4

Powiedzmy chcesz wybrać wszystkie Foos dla jednego konkretnego baru, by to zrobić:

List<Foo> foos = ((Foo) new Select().from(FooBar.class) 
       .where("Foo = ?", this.getId()) 
       .executeSingle()).foos(); 
+0

Czy to ma być w Bar.java? – Waclock

+0

@Waclock, tak. I przypuszczam, że powinno być obsadzone "FooBarem". – naXa