Прямо сейчас, моя иерархия отношений A -> (A -> ... -> A) -> B
, где есть некоторое количество (также может быть 0) A
в середине, и каждая стрелка является отношением один-ко-многим.
- Каждое
A
«дерево» оканчивается на B
. - Каждый
A
имеет либо A
, либо B
в качестве дочернего элемента (но не оба )
Мои сущности:
@Entity(tableName = "table_A")
data class A(
id, // ID of the A
parentAid // ID of the parent A (nullable)
)
@Entity(tableName = "table_B")
data class B(
id, // ID of this B
parentAid // ID of the parent A (non-nullable)
)
В настоящее время мой метод состоит в том, чтобы запросить "SELECT COUNT(*) FROM table_A WHERE parentAid = :id"
, чтобы получить сумму A
, которую имеет родитель. Если это число больше 0, повторите с каждым ребенком A
. Иначе, SELECT * FROM table_B WHERE parentAid = :id
запускается, чтобы получить список B
, который добавляется в список.
Это эффективный способ ведения дел? Есть ли в Комнате запрос, который может легко это сделать?