热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jOOQ是否支持PostgreSQL数组函数和运算符?

如何解决《jOOQ是否支持PostgreSQL数组函数和运算符?》经验,为你挑选了1个好方法。

jOOQ是否支持PostgreSQL数组函数和运算符?

array(select ... from ...)
array_length(array)
...

有关概述,请参见http://www.postgresql.org/docs/current/static/functions-array.html.

编辑

我在下面添加了一个示例查询.我还添加了查询来创建和填写表格,因此请尝试查询.

drop table if exists person_country;
drop table if exists person;
drop table if exists country;

create table person
(
    identifier      integer     not null,
    name            text        not null,

    primary key(identifier)
);
create table country
(
    identifier      integer     not null,
    name            text        not null,

    primary key(identifier)
);
create table person_country
(
    person_identifier   integer     not null,
    country_identifier  integer     not null,

    primary key(person_identifier, country_identifier),
    foreign key(person_identifier) references person,
    foreign key(country_identifier) references country
);

insert into person values(1, 'John');
insert into person values(2, 'Bill');
insert into person values(3, 'Jill');

insert into country values(1, 'Sweden');
insert into country values(2, 'China');
insert into country values(3, 'Germany');
insert into country values(4, 'Swiss');

insert into person_country values(1, 1);
insert into person_country values(1, 2);
insert into person_country values(1, 4);

insert into person_country values(2, 3);
insert into person_country values(2, 4);

select  r.identifier, r.name, r.a1 a1
from
(
    select  p.identifier, p.name, array(select pc.country_identifier from person_country pc where pc.person_identifier = p.identifier) a1
    from    person p
) r
where   array_length(a1, 1) >= 1;

Lukas Eder.. 7

是的,jOOQ支持PostgreSQL数组.一些流行的功能原生支持PostgresDSL.但是,并非所有特定于供应商的内置函数都受支持,因为它们太多了.如果您错过了jOOQ中的某个功能,您可以随时使用"纯SQL"并自行创建对该功能的支持.例如:

@SuppressWarnings({ "rawtypes", "unchecked" })
static  Field array(Select> select) {
    return DSL.field("array({0})", (DataType) 
        select.getSelect().get(0).getDataType().getArrayDataType(), select);
}

static Field arrayLength(
    Field array,
    Field dimension
) {
    return DSL.field("array_length({0}, {1})", Integer.class, array, dimension);
}

请注意,这些特定功能将在jOOQ 3.6(#3985)中支持开箱即用



1> Lukas Eder..:

是的,jOOQ支持PostgreSQL数组.一些流行的功能原生支持PostgresDSL.但是,并非所有特定于供应商的内置函数都受支持,因为它们太多了.如果您错过了jOOQ中的某个功能,您可以随时使用"纯SQL"并自行创建对该功能的支持.例如:

@SuppressWarnings({ "rawtypes", "unchecked" })
static  Field array(Select> select) {
    return DSL.field("array({0})", (DataType) 
        select.getSelect().get(0).getDataType().getArrayDataType(), select);
}

static Field arrayLength(
    Field array,
    Field dimension
) {
    return DSL.field("array_length({0}, {1})", Integer.class, array, dimension);
}

请注意,这些特定功能将在jOOQ 3.6(#3985)中支持开箱即用


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
author-avatar
手机电视2602907765
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有