查询具有字段和语句组合的行

问题描述 投票:3回答:1

在数据库级别,我有一个包含两列的表产品:gtin和market以及其他列。

我想编写一个可以转换为以下查询的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个回答
0
投票

使用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是相关Collection<? extends Row2<Long, Long>>方法所预期的Row2.in()in()方法有几个重载,所以你可以选择适合你的任何东西。

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

© www.soinside.com 2019 - 2024. All rights reserved.