Я читаю иерархию объектов с помощью ORMLite. Он имеет форму дерева, у родителей есть @ForeignCollection
из 0+
дочерних элементов, и каждый дочерний элемент ссылается на своего родителя с помощью @DatabaseField(foreign=true)
. Я читаю и сохраняю сразу всю иерархию.
Поскольку я новичок в ORM в целом, а также в ORMLite, я не знал, что при чтении объектов с одним и тем же идентификатором в базе данных они не будут создаваться как фактически один и тот же объект с одним и тем же идентификатором, но как несколько дубликатов с одним и тем же идентификатором. Это означает, что теперь я столкнулся с проблемой, что (скажем, «->» означает «относится к») A -> B -> C != C -> B -> A.
Я думал решить эту проблему, вручную прочитав их через предоставленные DAO и собрав их вместе по идентификатору, убедившись, что объекты с одинаковым идентификатором имеют одинаковую идентичность.
Есть ли ORMLite-родной способ решения этой проблемы? Если да, то что это, если нет, то каковы общие способы решения этой проблемы? Является ли это общей проблемой ORM? Есть ли у него название (я хотел бы узнать о нем побольше)?
Редактировать:
Моя иерархия такова, что одно здание содержит несколько этажей, где каждый этаж знает свое здание, и каждый этаж содержит несколько зон, где каждая зона знает свой этаж.