कुछ आलसी लोडिंग के साथ संभावित समस्याएं , लेकिन कुछ डीएओ चालबाजी के साथ यह संभव है। आपको सम्मिलन को स्पष्ट रूप से संभालने की आवश्यकता होगी, और एक बार में सब कुछ पूछने के लिए आपको इसे लपेटने के लिए एक पीओजेओ की आवश्यकता होगी।
@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();
}
कंस्ट्रक्टर, गेटर्स और सेटर्स को संक्षिप्तता के लिए छोड़ दिया गया।