Подтвердить что ты не робот

Поддержка внешнего ключа ORMlite для Android

Я не разбираюсь в документации 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, но нет ничего о том, какой параметр и из какой таблицы он представляет.

Спасибо

4b9b3361

Ответ 1

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

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

@DatabaseField(foreign = true)
private Account account;

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

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

Кроме того, есть пример кода примера для иностранных полей.

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