Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jooq从表的特定分区中进行选择_Java_Jooq - Fatal编程技术网

Java jooq从表的特定分区中进行选择

Java jooq从表的特定分区中进行选择,java,jooq,Java,Jooq,在表的特定分区上执行select查询的正确方法是什么。对于exmample,我有一个在特定列上进行范围分区的employees表 目前我有: Result<Record> fetch = DSL.using(configuration()) .select() .from(EMPLOYEES) .fetch(); 更新1 当我使用可更新记录时,更新/插入的情况如何,例如: employeeRecord.attach(configuration()) employeeRe

在表的特定分区上执行select查询的正确方法是什么。对于exmample,我有一个在特定列上进行范围分区的employees表

目前我有:

Result<Record> fetch = DSL.using(configuration())
  .select()
  .from(EMPLOYEES)
  .fetch();
更新1 当我使用可更新记录时,更新/插入的情况如何,例如:

employeeRecord.attach(configuration())
employeeRecord.update(); // or insert
我假设我可以做类似的事情,但那会处理乐观锁的情况吗(我通过表上的version列使用乐观锁)


你有没有试着用这里的例子,比如

create.select(t.BOOKED_AT, t.AMOUNT,
         sum(t.AMOUNT).over().partitionByOne()
                      .orderBy(t.BOOKED_AT)

jOOQ目前不支持表上的
分区
子句。相关功能请求为:

通过使用普通SQL模板API,您可以轻松克服此限制:

Result fetch=DSL.using(configuration())
.选择()
.from(“{0}分区(p2)”,雇员)
.fetch();
以上是为了方便:

Result fetch=DSL.using(configuration())
.选择()
.from(DSL.table(“{0}分区(p2)”,EMPLOYEES))
.fetch();

OP询问有关查询分区表的问题,这与窗口函数完全不同(尽管使用相同的关键字)。啊,我的错。我不确定jooq是否应该对此提供本机支持,因为它完全依赖于Oracle。谢谢你的正确答案!我没有检查过其他数据库,但至少DB2和PostgreSQL也支持分区表。我认为支持此特定于供应商的功能没有问题,不过,这可能不是优先考虑的问题。感谢这项工作,更新了可更新记录的问题case@anuj:您介意再次删除更新并提出新问题吗?我不确定这些事情是否有严格的联系。堆栈溢出不会很快用完毫无疑问的ID:-)
DSL.using(configuration())
                    .update("{0} partition (p2)", EMPLOYEES)
                    .set(EMPLOYEES.NAME, "abc")
                    .where(EMPLOYEES.ID.eq(123))
                    .execute();
create.select(t.BOOKED_AT, t.AMOUNT,
         sum(t.AMOUNT).over().partitionByOne()
                      .orderBy(t.BOOKED_AT)