Android camera Persistenza Biblioteca: Qual è il modo migliore per attuare una relazione molti a molti?

voti
4

Ho usato per usare Realm e attualmente sto testando in camera al fine di confrontare entrambi gli strumenti.

Sto cercando di implementare la seguente relazione molti a molti:

entrare

Qui la mia Entityclassi:

l' Person:

@Entity(tableName = person)
public final class RoomPerson {

  @PrimaryKey
  public int id;

  public String name;

}

La Catclasse:

@Entity(tableName = cat)
public final class RoomCat {

  @PrimaryKey
  public int id;

  public int age;

  public String name;

}

E la PersonCatclasse:

@Entity(tableName = person_cat, primaryKeys = { personId, catId },
    indices = { @Index(value = { catId }) },
    foreignKeys = { @ForeignKey(entity = RoomPerson.class, parentColumns = id, childColumns = personId),
        @ForeignKey(entity = RoomCat.class, parentColumns = id, childColumns = catId) })
public final class RoomPersonCat {

  public int personId;

  public int catId;

  public RoomPersonCat(int personId, int catId)  {
    this.personId = personId;
    this.catId = catId;
  }

}

Ho anche un POJO al fine di manipolare una persona con i gatti nella mia app:

public final class RoomPersonWithAnimals {

  @Embedded
  public RoomPerson person;

  @Relation(parentColumn = id, entityColumn = id, entity = RoomCat.class)
  public List<RoomCat> cats;

}

La domanda è: come salvare una List<RoomPersonWithAnimals>?

Dovrei fare 3 domande ogni volta al fine di risparmiare:

  • la persona nella tabella Person
  • i gatti nella tabella Cat
  • i suoi gatti nella tabella PersonCat

Qui il codice Java che illustrano le 3 richieste:

for (RoomPersonWithAnimals personWithAnimals : persons) {
  myRoomDatabase.roomPersonDao().insert(personWithAnimals.person);
  myRoomDatabase.roomCatDao().insertAll(personWithAnimals.cats.toArray(new RoomCat[personWithAnimals.cats.size()]));

  for (RoomCat cat : personWithAnimals.cats) {
    myRoomDatabase.roomPersonCatDao().insert(new RoomPersonCat(personWithAnimals.person.id, cat.id));
  }
}

Nel Regno, è possibile salvare in una sola richiesta questi dati. E 'è una limitazione della Camera o mia implementazione è sbagliato?

Grazie in anticipo per il vostro aiuto !

È pubblicato 28/07/2017 alle 07:05
fonte dall'utente
In altre lingue...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more