Выберите поля из двух таблиц с Speedment

Я хочу выбрать поля из двух таблиц с помощью Speedment ORM и показать регистры по System.out.println.

Это мой основной запрос:

        return AMDB.INSTANCE.interface_Manager().stream().filter(Interface_.INTERFACEID.contains(s))
            .map(AMDB.INSTANCE.abstractcomponentManager().finderBy(Interface_.INTERFACE_COMPONENT_E_ID))
            .flatMap(AMDB.INSTANCE.concretecomponentManager().finderBackwardsBy(Concretecomponent.ABSTRACTCOMPONENT_E_ID))
            .map(cc -> cc.getConcretecomponentCamCamid())
            .collect(Collectors.toList());

И я хочу получить / выбрать поля из разных таблиц:

    StreamComposition.concatAndAutoClose(
            AMDB.INSTANCE.interface_Manager().stream().filter(Interface_.INTERFACEID.contains(s))
                    .map(i -> i.getInterfaceid()),

            AMDB.INSTANCE.interface_Manager().stream().filter(Interface_.INTERFACEID.contains(s))
                    .map(AMDB.INSTANCE.abstractcomponentManager().finderBy(Interface_.INTERFACE_COMPONENT_E_ID))
                    .map(ac -> ac.getComponentname()),

            AMDB.INSTANCE.interface_Manager().stream().filter(Interface_.INTERFACEID.contains(s))
                    .map(AMDB.INSTANCE.abstractcomponentManager().finderBy(Interface_.INTERFACE_COMPONENT_E_ID))
                    .flatMap(AMDB.INSTANCE.concretecomponentManager().finderBackwardsBy(Concretecomponent.ABSTRACTCOMPONENT_E_ID))
                    .map(cc -> cc.getConcretecomponentCamCamid())
    ).forEachOrdered(System.out::println);

Может быть как:

SELECT * FROM table1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ tabl2 ON table1.id = table2.id

или же

ИЗ таблицы 1, таблицы 2

Я нашел один способ:

        Map<Abstractcomponent, List<Interface_>> map0 = AMDB.INSTANCE.interface_Manager().stream().filter(Interface_.INTERFACEID.contains(s))
            .collect(Collectors.groupingBy(AMDB.INSTANCE.abstractcomponentManager().finderBy(Interface_.INTERFACE_COMPONENT_E_ID)));

Но я хочу получить поля из последней таблицы со значениями Map<String, List<Interface_>>, где "Строка - это поле из таблицы"concretecomponentManager"

2 ответа

Я не понимаю пример из вопроса, но хотел заметить, что ускорение действительно поддерживает соединения:

Map<Actor, List<Film>> filmographies = filmActors.stream()
.collect(
    groupingBy(actors.finderBy(FilmActor.ACTOR_ID), // Applies the FilmActor to ACTOR classifier
        mapping(
            films.finderBy(FilmActor.FILM_ID), // Applies the FilmActor to Film finder
            toList()                           // Use a List collector for downstream aggregation.
        )
    )
);

См соединения, многие ко многим и сводные данные.

Speedment (по состоянию на последнюю версию 3.0.13) не поддерживает JOIN. Тем не менее, вы можете создать VIEW в базе данных, которая объединит две таблицы вместе, а затем сгенерировать код из этого с помощью Speedment.

Другие вопросы по тегам