Обновления для иностранных участников ORMLite - PullRequest
4 голосов
/ 18 апреля 2011

У меня есть элемент верхнего уровня, который я сохраняю в базе данных, и он имеет несколько внешних элементов, что-то вроде этого:

@DatabaseTable
public class Parent {
    @DatabaseField(id = true, index = true)
    public Integer id;

    @DatabaseField(foreign = true)
    public ChildA a;
}

@DatabaseTable
public class ChildA {
    DatabaseField(generatedId = true, index = true)
    public Integer id;

    @DatabaseField
    public boolean something;
}

Предполагается, что они уже созданы в базе данных. И теперь я хочу обновить их. Будут ли звонки parentDao.update(parent) обновлять оба? Или мне тоже нужно вручную обновить ребенка?

1 Ответ

7 голосов
/ 20 апреля 2011

Краткий ответ:

нет, он не будет обновлять оба

Посторонние объекты не являются прокси-объектами, поэтому ORMLite не может определить,подобъект был изменен и нуждается в обновлении.Поэтому, если вы измените оба объекта Parent и ChildA, вам нужно будет сделать что-то вроде:

 childADao.update(parent.a);
 parentDao.update(parent);

Очевидно, что если вы установите new ChildA на parent, тогдаэто обновит этот новый идентификатор в родительской таблице.

...