【问题标题】:Select fields from two tables with Speedment使用 Speedment 从两个表中选择字段
【发布时间】:2018-01-10 17:54:55
【问题描述】:

我想使用 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 INNER JOIN table2 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&lt;String, List&lt;Interface_&gt;&gt;, 实现最后一个连接表中的字段,其中“字符串是来自“concretecomponentManager”表的字段

【问题讨论】:

  • 你尝试了什么?

标签: java sql speedment


【解决方案1】:

Speedment(截至最新版本 3.0.13)不支持 JOIN。但是,您可以在数据库中创建一个 VIEW,将这两个表连接在一起,然后使用 Speedment 生成代码。

【讨论】:

    【解决方案2】:

    我不理解问题中的示例,但想说明一下 speedment 实际上确实支持连接:

    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.
            )
        )
    );
    

    请参阅joinsmany to manypivot data

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      相关资源
      最近更新 更多