nig*_*ils 10 android android-room android-architecture-components
我有一个POJO,我将其嵌入房间实体; 请注意,POJO在库模块中定义 ;
@Entity
public class Person {
@PrimaryKey
@NonNull
private String uuid;
@Embedded
@NonNull
private Address address;
public Person(@NonNull String uuid, @NonNull Address address) {
this.uuid = uuid;
this.address = address;
}
@NonNull
public String getUuid() {
return uuid;
}
@NonNull
public Address getAddress() {
return address;
}
}
public class Address {
@NonNull
private String street;
@NonNull
private String city;
public Address(@NonNull String street, @NonNull String city) {
this.street = street;
this.city = city;
}
@NonNull
public String getStreet() {
return street;
}
@NonNull
public String getCity() {
return city;
}
}
@Dao
public interface PersonDao {
@Query("SELECT * FROM Person")
List<Person> getPersons();
}
@TypeConverters(DateConverter.class)
@Database(entities = {Person.class}, version = 1, exportSchema = false)
public abstract class PersonDb extends RoomDatabase {
private static volatile PersonDb INSTANCE;
public abstract PersonDao getPersonDao();
}
Run Code Online (Sandbox Code Playgroud)
编译失败
"错误:实体和Pojos必须具有可用的公共构造函数.您可以拥有一个空构造函数或其参数与字段匹配的构造函数(按名称和类型)." 错误:无法找到字段的setter.
如果我@NonNull
从构造函数参数中删除注释到地址POJO,代码编译正常.此外,如果app模块中存在相同的POJO,则代码将进行编译.
可以看出,Address
类确实有一个公共构造函数.
我在这里错过了什么?usable constructor
在Room的观点中,定义是什么?或者这是Room的问题?
uuid
并被address
声明为private
,Person
您有这些的 getter,但没有 setter。因此,您可以创建 setter 或将它们声明为public
.
归档时间: |
|
查看次数: |
1848 次 |
最近记录: |