Android ORMLite дает SQLException при использовании двух таблиц - PullRequest
0 голосов
/ 28 февраля 2012

Я использовал пример HelloAndroid для OrmLite и изменил его в соответствии с моими требованиями, и он отлично работает.

Но затем я добавил еще один Бин (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.

Исключение говорит об этом

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;
    }   
}

Вот так выглядит моя БИНА. спасибо.

1 Ответ

1 голос
/ 29 февраля 2012

Я подозреваю, что в вашем файле конфигурации есть некоторая синтаксическая ошибка, которая не сразу заметна при копировании и вставке. Я настоятельно рекомендую вам не создавать этот файл вручную. Вы должны удалить эти строки, чтобы начать.

@DatabaseField(generatedId = true)

Кроме этого, я не вижу никаких проблем с файлом, хотя вам нужно убедиться, что все строки # не имеют отступов. Если вы разместите фактический файл на http://pastebin.com/ и отредактируете свой вопрос с помощью URL, возможно, мы сможем помочь вам больше.

...