Здравствуйте, мне необходимо получить список, который бы содержал списки в которых бы были записи; Например, List<List>. На текущий момент я сначала вытаскиваю один список, потом пробегаюсь по нему и для каждого элемента вытягиваю еще список. Такой вариант довольно затратный в лане ресурсов! Есть ли способ получить данные в таком формате через DataManager одним запросом в формате List<List>?
Если я вас правильно понял то у вас что то типа.
@JmixEntity
@Table(name = "JT_TEST_ENTITY1")
@Entity(name = "jt_TestEntity1")
open class TestEntity1 : BaseEntity() {
@OneToMany(mappedBy = "testEntity1")
var testEntities2: MutableList<TestEntity2>? = null
}
@JmixEntity
@Table(name = "JT_TEST_ENTITY2", indexes = [
Index(name = "IDX_JTTESTENTITY2_TESTENTITY1", columnList = "TEST_ENTITY1_ID")
])
@Entity(name = "jt_TestEntity2")
open class TestEntity2 : BaseEntity() {
@JoinColumn(name = "TEST_ENTITY1_ID")
@ManyToOne(fetch = FetchType.LAZY)
var testEntity1: TestEntity1? = null
}
И вы хотите получить сгруппированные списки TestEntity2
по TestEntity1
. Что вы имеете в виду в плане затратности? Вы грузите список TestEntity1
и потом для каждой TestEntity1
грузите список TestEntity2
? Навряд ли при помощи dataManager
можно грузить список списков. По крайне мере у меня падает Collection attributes are not supported in select
.
Возможно вам лучше сделать так?
dataManager.load(TestEntity2::class.java)
.all().list().groupBy { it.testEntity1 }.values
Тут загрузка происходит один раз. (Не забудьте добавить нужный вам fetсhPlan
с testEntity1
)
Затратность в плане того, что в цикле для каждого TestEntity1 надо грузить список с сущностями TestEntity2. Ну я тоже подумал о groupBy только для entityManager