Выберите поля из двух таблиц с 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.