sql >> Database >  >> RDS >> Mysql

Android Room - Lijst met objecten in een object verwerken en resultaten opvragen

Room ondersteunt dit niet rechtstreeks vanwege een mogelijke problemen met lui laden , maar met wat DAO-trucs is het mogelijk. Je moet de invoegingen expliciet afhandelen en om alles in één keer op te vragen heb je een POJO nodig om alles in te pakken.

@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();

}

Constructors, getters en setters zijn voor de beknoptheid weggelaten.




  1. Escape-functie voor reguliere expressie of LIKE-patronen

  2. PHP:MySQL-query dupliceert update zonder reden

  3. Is er een verschil tussen DateTime in c# en DateTime in SQL-server?

  4. Databasecorruptie met MariaDB:Tabel bestaat niet in engine