【问题标题】:Query for rows with combination of fields and in statement查询具有字段组合和 in 语句的行
【发布时间】:2019-02-05 16:59:04
【问题描述】:

在数据库级别,我有一个表 product 有两列:gtinma​​rket 以及其他列。

我想编写一个 java 代码,将其转换为以下查询:

select * from product where (gtin, market) IN (('USA', 1), ('CA',2), ('PL', 3), ('CZ, 4))

java 代码级别上,我有一个特殊的实体 GtinMarket 专门用于存储这两个 gtin 和市场值:

GtinMarket {
    String gtin;
    String market;
}

在代码级别上,我希望是这样的:

using(configuration)
                .select()
                .from(table(PRODUCT_TABLE))
                .where((field(GTIN, Long.class),field(MARKET, Long.class)).in(gtinMarketList))
                .fetch()

经过一番调查,我无法找到编写此类代码的方法,

非常感谢任何帮助,

谢谢,

【问题讨论】:

    标签: java jooq


    【解决方案1】:

    使用DSL.row(Field, Field) 进行类型安全的行值表达式构造:

    using(configuration)
        .select()
        .from(table(PRODUCT_TABLE))
        .where(row(field(GTIN, Long.class), field(MARKET, Long.class)).in(gtinMarketList))
        .fetch()
    

    这是假设您的gtinMarketList 是相关Row2.in() 方法所期望的Collection<? extends Row2<Long, Long>>in() 方法有几个重载,所以你可以选择适合你的。

    更多信息在这里: https://www.jooq.org/doc/latest/manual/sql-building/conditional-expressions/in-predicate-degree-n

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多