在数据库级别,我有一个表 product ,该表具有两列: 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()
经过一番调查,我找不到写这种代码的方法,
真的很感谢您的帮助,
谢谢
答案 0 :(得分: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
是相关Row2.in()
方法所期望的Collection<? extends Row2<Long, Long>>
。 in()
方法有多个重载,因此您可以选择适合自己的任何内容。
更多信息在这里: https://www.jooq.org/doc/latest/manual/sql-building/conditional-expressions/in-predicate-degree-n