当前位置: 首页 > 知识库问答 >
问题:

如何在querydsl中连接外键

易元青
2023-03-14
    null

item_warehouse

  • 公司(fk代表项目)MBCONO
  • 项目编号(fk表示项目)mbitno
  • 环境(fk for Item)mbenv
  • 仓库编号MBWHLO
  • 其他属性(不重要)

在Item_wharehouse类中,我手动添加了foreignKey(因为它没有在实际的db模式中定义)

 public final com.querydsl.sql.ForeignKey<QItemWharehouse > _ItemWharehouseFk = createInvForeignKey(Arrays.asList(mbitno, mbcono, mbenv), Arrays.asList("mmitno", "mmcono", "mbenv"));
    SQLTemplates templates = SQLServer2012Templates.builder().printSchema().build();
    Configuration configuration = new Configuration(templates);

    QItem mm = new QItem ("mm");
    QItemWarehouse mb = new QItemWarehouse("mb");

    JtdsDataSource ds = getDataSource();
    SQLQueryFactory queryFactory = new SQLQueryFactory(configuration, ds);
    String toto = queryFactory.select(mm.mmitno, mm.mmitds)
            .from(mm)
            .join(  ???????????? )
            .where(mb.mbwhlo.eq("122"))
            .fetch()

我的问题是找不到join方法的第二个参数RelationalPath Entity 类型。

我做错了什么?我错过了什么?有可能完成我想要的吗?

共有1个答案

公冶才
2023-03-14

哎呀,我发现了问题:我把所有的东西都按错了顺序。

外键位于itemWarehouse类中。它应该这样命名:

public final com.querydsl.sql.ForeignKey<QItem> _ItemFk = createInvForeignKey(Arrays.asList(mbitno, mbcono, mbenv), Arrays.asList("mmitno", "mmcono", "mbenv"));

这意味着您只需以这种方式颠倒语句中的顺序:

SQLTemplates templates = SQLServer2012Templates.builder().printSchema().build();
Configuration configuration = new Configuration(templates);

QItem mm = new QItem ("mm");
QItemWarehouse mb = new QItemWarehouse("mb");

JtdsDataSource ds = getDataSource();
SQLQueryFactory queryFactory = new SQLQueryFactory(configuration, ds);
List<Tuple> toto = queryFactory.select(mm.mmitno, mm.mmitds)
        .from(mb)
        .join(mb._ItemFk, mm )
        .where(mb.mbwhlo.eq("122"))
        .fetch()
 类似资料:
  • > 帐户表:accountId(PK)电子邮件密码 account_profile表:accountId(PK)(fk到account)昵称 团体表:articleId(PK)accountId(fk to account)标题内容 现在我想要下面的JPQL是查询DSL代码 我有实体元模型-QAccount、QAccountProfile、QCommunity 此外,我必须通过分页获得结果,因此应

  • 如何在中实现或。一个简单的例子很有帮助。

  • 我使用的是Querydsl 2.9、Spring Data JPA 1.3.0和Hibernate JPA 2 API 1.0版。我试图在两个表和之间进行简单的连接,连接到列。由于某些原因,Hibernate执行的查询中总是有一个额外的。这些表格如下所示: 但是,实际运行的查询是这样的: 请注意结尾处额外的。我意识到,如果在上执行可以得到正确的结果,但我不希望在不需要的情况下增加的额外开销。我尝试

  • 我有两条左右流。就在同一时间窗口 左侧流包含元素L1、L2(数字为键) 右流包含元素R1、R3 我想知道如何在Apache Flink中实现LEFT OUTER JOIN,以便处理此窗口时获得的结果如下: L1、R1通过键(1)匹配,L2、R3不匹配。L2包括在内,因为它位于左侧

  • 问题内容: 我试图通过hibernate将一些数据插入到postgresql中。但是,关于使用postgresql配置hibernate的教程并不多(我知道,它应该类似于mysql =) src / main / resources / hibernate.cfg.xml src / main / java / src / main / java包com.hib.entities; src / m

  • 在java reactor中,r2dbc。我有两个表A和B。我还为它们定义了存储库。如何获取由连接B组成的数据? 我只提出了以下方法:调用databaseClient。从A中选择,然后在循环调用中从B中选择。 但我想要更有效、更被动的方式。怎么做?