Поддержка внешнего ключа Android ORMlite - PullRequest
17 голосов
/ 25 января 2012

Я не умен из документации ORMlite. Можно ли объявить в классе, что этот параметр является внешним ключом?

например. У меня есть таблица Customer:

@DatabaseTable(tableName = "customer")
public class Customer {
    @DatabaseField(id = true)
    private String customerName;

    @DatabaseField
    private String customerSurname;

    @DatabaseField(foreign = true)
    private String accountNameHolder;

    @DatabaseField
    private int age;

    public Customer() {
    }
}

AccountNameHolder должен ориентироваться на имя DatabaseField из таблицы Accounts. Как это сделать? Я нашел только параметр foreign = true, но ничего не известно о том, какой параметр и из какой таблицы он представляет.

Спасибо

1 Ответ

40 голосов
/ 25 января 2012

AccountNameHolder должен ориентироваться на имя DatabaseField из таблицы Accounts. Как это сделать?

Я не совсем уверен, что вы хотите, но, возможно, вам следует изменить свое внешнее поле на действительный тип вместо имени:

@DatabaseField(foreign = true)
private Account account;

Внутренне, ORMLite сохранит поле account_id (возможно, имя строки) в таблице Customer, но вам не нужно об этом беспокоиться. Помните, что когда вы запрашиваете Customer, для Account, установленного в поле account, будет просто установлено поле id. Чтобы ORMLite также просматривал учетную запись, вам нужно установить foreignAutoRefresh=true.

Как указывал @Lalit, вот некоторая документация по этому вопросу. Мы потратили много времени на документацию, поэтому она должна быть полезной.

Также есть пример примера кода для внешних полей .

Надеюсь, это поможет.

...