Android ORMLite在使用两个表时给出了SQLException

时间:2012-02-28 07:44:17

标签: android orm sqlexception ormlite

我使用了OrmLite的HelloAndroid示例,并根据我的要求对其进行了修改,并且完美无缺。

然后我添加了另一个Bean(POJO带有正确的注释)并且还更新了我的Config.txt文件以获取新表格

# --table-start--
dataClass=com.example.helloandroid.SchoolDataBean

@DatabaseField(generatedId = true)
tableName=schooltable
# --table-fields-start--

# --field-start--
fieldName=rollNo
generatedId=true
# --field-end--

# --field-start--
fieldName=name
indexName=simpledata_string_idx
# --field-end--

# --field-start--
fieldName=gender
# --field-end--

# --field-start--
fieldName=presence
# --field-end--

# --table-fields-end--
# --table-end--

# --table-start--
dataClass=com.example.helloandroid.CompanyDataBean

@DatabaseField(generatedId = true)
tableName=companytable
# --table-fields-start--

# --field-start--
fieldName=companyId
generatedId=true
# --field-end--

# --field-start--
fieldName=name
indexName=simpledata_string_idx
# --field-end--

# --field-start--
fieldName=designation
# --field-end--

# --field-start--
fieldName=annualPay
# --field-end--

# --table-fields-end--
# --table-end--

与我添加第二个表的第一个表类似,我相信我在Config类本身出错了。

Exception说这个

java.sql.SQLException: Could not find declared field with name 'companyId' for class com.example.helloandroid.SchoolDataBean

必须有一些方法告诉编译器第一个表已经结束并且现在要读取新表,因为它在第一个表中读取第二个表的列名。

public class CompanyDataBean {

    //id is generated by the database and set on the object automagically
    @DatabaseField(generatedId = true)
    int companyId;
    @DatabaseField(index = true)
    String name;
    @DatabaseField
    String designation;
    @DatabaseField
    String annualPay;

    public CompanyDataBean() {
    }

    public CompanyDataBean(int companyId,String name, String designation, String annualPay){
        this.companyId=companyId;
        this.name=name;
        this.designation=designation;
        this.annualPay=annualPay;
    }   
}

这就是我的BEAN的样子。 感谢。

1 个答案:

答案 0 :(得分:1)

我怀疑您的配置文件中存在一些语法错误,这在您的剪切和粘贴中并不是很明显。我强烈建议您不要手动生成此文件。您需要删除这些行才能开始。

@DatabaseField(generatedId = true)

除此之外,我没有看到文件有任何问题,但您需要确保所有#行都没有缩进。如果您将实际文件发布到http://pastebin.com/并使用网址修改您的问题,我们可能会提供更多帮助。