当使用Android Room进行查询时,如果实体类的构造函数没有调用预期的参数,则可能会遇到此问题。
例如,以下代码片段中的构造函数只接受两个参数,但查询需要三个:
@Entity(tableName = "users")
public class User {
@PrimaryKey
public int id;
public String firstName;
public String lastName;
public User(int id, String firstName, String lastName) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
}
为了解决这个问题,可以添加一个空的构造函数和一个带有所有参数的构造函数,如下所示:
@Entity(tableName = "users")
public class User {
@PrimaryKey
public int id;
public String firstName;
public String lastName;
public User() {}
public User(int id, String firstName, String lastName) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
}
这将确保Room可以使用预期的构造函数进行实例化,并避免查询未调用预期的构造函数的问题。