在Android Room中创建一对一关系的实体,你需要定义两个实体类,并使用@Embedded
和@Relation
注解来建立它们之间的关系。
以下是一个示例:
首先,假设你有两个实体类:User
和Address
。User
实体类包含用户的基本信息(如姓名、年龄等),Address
实体类包含用户的地址信息(如街道、城市、邮编等)。
User实体类:
@Entity(tableName = "users")
public class User {
@PrimaryKey(autoGenerate = true)
private int id;
private String name;
private int age;
// Getter and Setter methods
// ...
}
Address实体类:
@Entity(tableName = "addresses")
public class Address {
@PrimaryKey(autoGenerate = true)
private int id;
private String street;
private String city;
private String postalCode;
// Getter and Setter methods
// ...
}
接下来,你需要创建一个包含两个实体类的新类,用于表示它们之间的一对一关系。可以使用@Embedded
注解将Address
对象嵌入到User
对象中,并使用@Relation
注解来表示它们之间的关系。
UserWithAddress类:
public class UserWithAddress {
@Embedded
public User user;
@Relation(parentColumn = "id", entityColumn = "id")
public Address address;
}
现在,你可以在DAO(数据访问对象)中使用@Transaction
注解来查询User和Address表,并返回UserWithAddress对象的列表。
UserDao接口:
@Dao
public interface UserDao {
@Transaction
@Query("SELECT * FROM users")
List getUsersWithAddresses();
}
最后,在你的数据库类中,将User和Address实体类和UserWithAddress类添加到entities
数组中。
AppDatabase类:
@Database(entities = {User.class, Address.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
// ...
}
这样,你就可以通过调用userDao().getUsersWithAddresses()
方法来获取包含User和Address关联信息的UserWithAddress对象列表。
这是一个简单的示例,你可以根据你的需求进行扩展和修改。希望对你有所帮助!