sql >> Databáze >  >> RDS >> Mysql

Android Room – Práce se seznamem objektů v objektu a výsledkem dotazování

Místnost to přímo nepodporuje kvůli některým potenciální problémy s líným načítáním , ale s nějakým DAO trikem je to možné. Budete muset zacházet s vkládáním explicitně a k dotazování všeho najednou budete potřebovat POJO, který to celé zabalí.

@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éry, getry a settery jsou pro stručnost vynechány.




  1. Žádná další data ke čtení z chyby soketu

  2. ssh nejprve s mysqldb v pythonu

  3. SQL Server 2005 implementace MySQL REPLACE INTO?

  4. Vkládání znaků doprostřed řetězce v SQL Server (T-SQL)