在数据库级别,我有一个包含两列的表产品: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()
经过一番调查后,我无法找到编写这样一个代码的方法,
我真的很感激任何帮助,
谢谢,
使用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