2017-10-05 31 views
0

我是android架构组件中的新成员。我正在尝试与android-architecture-components/BasicRxJavaSample以及Gradle配置一起构建应用程序。但我得到以下错误:错误:实体和Pojos必须有一个可用的公共构造函数,并且无法找到字段的设置器

  • 错误:(14,8)错误:实体和Pojos必须有一个可用的公共构造函数。你可以有一个空的构造函数或者一个构造函数,它们的参数匹配字段(通过名称和类型)。尝试使用下列构造函数,但它们不匹配:= Department(java.lang.String,java.lang.String):[id: null,dep:null]
  • 错误:(16,20)错误:无法找到字段的setter。
  • 错误:(18,20)错误:无法找到字段的setter。

我对所有体系结构组件使用“1.0.0-alpha9”版本。我也尝试过使用当前的“1.0.0-beta1”版本。

我看了[暧昧的getter for Field ...房间持久性库 2链接也可以根据谷歌示例不需要为每个字段设置。

Model类

@Entity(tableName = "tblDepartment") 
public class Department{ 
    @PrimaryKey 
    private String mId; 

    private String mName; 

    @Ignore 
    public Department(String dep) { 
     mId= UUID.randomUUID().toString(); 
     mName= dep; 
    } 
    public Department(String id, String dep) { 
     mId = id; 
     mName=dep; 
    } 

    public String getDepartmentId() { 
     return mId; 
    } 

    public String getDepartmentName() { 
     return mName; 
    } 
} 
+0

你的问题是与'Expense'类。你的问题显示了一个'部门'类。要么你有错误的错误信息或错误的代码。 – CommonsWare

+0

我错误地添加了错误的错误日志。 –

回答

0

你需要一个有效的构造槽的名字。

并且您正在存储槽的所有字段的吸气剂/吸附剂室。

尝试:

@Entity(tableName = "tblDepartment") 
public class Department{ 
@PrimaryKey 
private String mId; 

private String mName; 

@Ignore 
public Department(String mName) { 
    mId= UUID.randomUUID().toString(); 
    this.mName= mName; 
} 
public Department(String id, String name) { 
    this.mId = mId; 
    this.mName=mName; 
} 

public String getId() { 
    return mId; 
} 

public String getName() { 
    return mName; 
} 
public void setId(String mId){ this.mId = mId; } 
public void setName(String mName){ this.mName = mName; } 
} 
+0

[检查此谷歌示例](https://github.com/googlesamples/android-architecture-components/blob/master/BasicRxJavaSample/app/src/main/java/com/example/android/observability/persistence/User。 java)。这里没有使用公共构造函数。 –

+0

我已经尝试过这个构造函数。 –

+1

问题是你不使用列名称和你的POJO没有在你的变量中有相同的名称你的变量 –

相关问题