sql >> Databasteknik >  >> RDS >> Mysql

Android Room - Hantera lista över objekt i ett objekt och frågeresultat

Rummet stöder inte detta direkt på grund av vissa potentiella problem med lat laddning , men med lite DAO-tricks är det möjligt. Du måste hantera infogningen explicit, och för att fråga allt på en gång behöver du en POJO för att slå in det hela.

@Entity(foreignKeys = {
    @ForeignKey(
            entity = PersonEntity.class,
            parentColumns = "personId",
            childColumns = "personIdFk",
            onDelete = CASCADE
    )
})
public class Pet {
    @PrimaryKey
    private String petId;
    private String name;
    private String personIdFk;
}

@Entity(tableName = "person")
public class PersonEntity {
    @PrimaryKey
    private String personId;
}

public class Person {
    @Embedded
    private PersonEntity personEntity;
    @Relation(parentColumn = "personId", entityColumn = "personIdFk")
    private List<Pet> pets;
}

@Dao
public abstract class PersonDao {

    @Insert
    protected abstract void insert(PersonEntity personEntity);

    @Insert
    protected abstract void insert(List<Pet> pets);

    @Transaction
    public void insert(Person person) {
        insert(person.getEntity());
        insert(person.getPets());
    }

    @Query("SELECT * FROM person")
    public abstract List<Person> getAll();

}

@Database(entities = {PersonEntity.class, Pet.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {

    public abstract PersonDao personDao();

}

Konstruktörer, getters och sättare utelämnade för korthetens skull.




  1. MySQL &Java - Få id för det senast infogade värdet (JDBC)

  2. finns det en mysql-funktion för att avkoda html-enheter?

  3. JSON_ARRAY_APPEND() – Lägg till värden till en JSON-array i MySQL

  4. Hur man lägger till kolumn för automatisk ökning i befintlig tabell i MySQL