Обновления внешнего члена ORMLite

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

@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) обновление как? Или мне нужно также вручную обновить ребенка?

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

Нет, он не обновит оба

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

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

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