2013-07-15 8 views
8

Sebbene questa domanda riguardi ActiveAndroid, chiunque abbia familiarità con gli ORM potrebbe probabilmente rispondere a questa domanda.Relazione molti-a-molti con Android attivo

ActiveAndroid non sembra fornire un modo per stabilire relazioni molti-a-molti. Quello che ho trovato durante la ricerca di una soluzione è stato questo problema GitHub: https://github.com/pardom/ActiveAndroid/issues/46

capisco che sta creando in modo esplicito la tabella di relazioni, ma io non capisco come si suppone che la parte seguente per fare qualcosa di utile:

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

Ciò comporterebbe una query come SELECT * FROM Foo where Foo.FooBar = FooBar.Id;. Ciò restituirebbe al massimo una riga Foo. Mi sto perdendo qualcosa?

Non hai bisogno di una richiesta di partecipazione?

+0

Ecco la mia risposta su un altro luogo: [Activeandroid molti-a-molti] (http: // StackOverflow .com/questions/26207948/activeandroid-many-to-many-relationship/39203783 # 39203783) –

risposta

4

Diciamo che si desidera selezionare tutti i Foos per una specifica barra, si dovrebbe fare questo:

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

Questo dovrebbe andare in Bar.java? – Waclock

+0

@Waclock, sì. E suppongo che ci dovrebbe essere il cast di "FooBar". – naXa