sql >> データベース >  >> RDS >> Mysql

AndroidRoom-オブジェクト内のオブジェクトのリストの処理と結果のクエリ

    遅延読み込みに関する潜在的な問題 、しかし、いくつかのDAOのトリックでそれは可能です。挿入を明示的に処理する必要があり、すべてを一度にクエリするには、すべてをラップするためにPOJOが必要になります。

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

    簡潔にするために、コンストラクター、ゲッター、セッターは省略されています。




    1. PostgreSQLでのAbs()のしくみ

    2. SQLite MIN

    3. テーブルを書くためのSQLステートメント?

    4. ユーザー変数を含む式の評価の順序が定義されていないのはなぜですか?