- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们面临与将 Oracle 查询转换为 JOOQ 对象相关的问题。
Oracle 查询在这里:
select v0 AddressLine1, v1 AddressLine2, v2 AddrCity, v3 AddrProvince, v4 AddrPostal, v5 NameFirst, v6 NameMiddle,
v7 AddrStreet, v8 NameLast, v9 Phone1, v10 PeopleCode, v11 LicenceNumber, v12 FamilyRSN, v13 PeopleRSN, v14 EmailAddress,
v15 AddrHouse, v16 StatusCode, v17 ParentRSN, v18 StatusType, v19 FullName
from (select x.v0, x.v1, x.v2, x.v3, x.v4, x.v5, x.v6, x.v7, x.v8, x.v9, x.v10, x.v11, x.v12, x.v13, x.v14, x.v15, x.v16,
x.v17, x.v18, x.v19, rownum rn from (select amanda7.People.AddressLine1 v0, amanda7.People.AddressLine2 v1,
amanda7.People.AddrCity v2, amanda7.People.AddrProvince v3, amanda7.People.AddrPostal v4, amanda7.People.NameFirst v5,
amanda7.People.NameMiddle v6, amanda7.People.AddrStreet v7, amanda7.People.NameLast v8, amanda7.People.Phone1 v9,
amanda7.People.PeopleCode v10, amanda7.People.LicenceNumber v11, amanda7.People.FamilyRSN v12, amanda7.People.PeopleRSN v13,
amanda7.People.EmailAddress v14, amanda7.People.AddrHouse v15, amanda7.People.StatusCode v16, amanda7.People.ParentRSN v17,
amanda7.People.StatusType v18, (nvl(amanda7.People.OrganizationName, '') || nvl(amanda7.People.NameTitle, '')
|| nvl(amanda7.People.NameFirst, '') || nvl(amanda7.People.NameMiddle, '') || nvl(amanda7.People.NameLast, '') ||
nvl(amanda7.People.NameSuffix, '')) v19 from amanda7.People order by v19 desc) x where rownum <= (0 + 200)) where rn > 0;
JOOQ在这里:
private SelectQuery<Record> getPeopleListQuery(Collection<SQLCondition<?>> conditions) {
List<Field<?>> fields = new ArrayList<>();
fields.add(People.PEOPLE.ADDRESS_LINE_1);
fields.add(People.PEOPLE.ADDRESS_LINE_2);
fields.add(People.PEOPLE.ADDR_CITY);
fields.add(People.PEOPLE.ADDR_PROVINCE);
fields.add(People.PEOPLE.ADDR_POSTAL);
fields.add(People.PEOPLE.NAME_FIRST);
fields.add(People.PEOPLE.NAME_MIDDLE);
fields.add(People.PEOPLE.ADDR_STREET);
fields.add(People.PEOPLE.NAME_LAST);
fields.add(People.PEOPLE.PHONE_1);
fields.add(People.PEOPLE.PEOPLE_CODE);
fields.add(People.PEOPLE.LICENCE_NUMBER);
fields.add(People.PEOPLE.FAMILY_RSN);
fields.add(People.PEOPLE.PEOPLE_RSN);
fields.add(People.PEOPLE.EMAIL_ADDRESS);
fields.add(People.PEOPLE.ADDR_HOUSE);
fields.add(People.PEOPLE.STATUS_CODE);
fields.add(People.PEOPLE.PARENT_RSN);
fields.add(People.PEOPLE.STATUS_TYPE);
// Added to provide sort functionality on peopleName on header sort.
fields.add(DSL.concat(DSL.isnull(People.PEOPLE.ORGANIZATION_NAME, ""), DSL.isnull(People.PEOPLE.NAME_TITLE, ""),
DSL.isnull(People.PEOPLE.NAME_FIRST, ""), DSL.isnull(People.PEOPLE.NAME_MIDDLE, ""), DSL.isnull(People.PEOPLE.NAME_LAST, ""),
DSL.isnull(People.PEOPLE.NAME_SUFFIX, "")).as("FullName"));
advanceSearchSelectQuery.addFields(fields);
advanceSearchSelectQuery.addOrderBy(SortDialogViewModelNew.createJSONString(userSortingChoice));
return advanceSearchSelectQuery.getSelectQuery();
}
此 JOOQ 查询给出异常无效的列名,因为我们使用 order by 子句并使用别名作为 FullName
。此查询对于 SQL 工作正常,但在 Oracle DB 中给出异常。在 Oracle DB 中order by 子句下面生成的查询给出 v19 而不是 FullName
:
select v0 AddressLine1, v1 AddressLine2, v2 AddrCity, v3 AddrProvince, v4 AddrPostal, v5 NameFirst, v6 NameMiddle,
v7 AddrStreet, v8 NameLast, v9 Phone1, v10 PeopleCode, v11 LicenceNumber, v12 FamilyRSN, v13 PeopleRSN, v14 EmailAddress,
v15 AddrHouse, v16 StatusCode, v17 ParentRSN, v18 StatusType, v19 FullName
from (select x.v0, x.v1, x.v2, x.v3, x.v4, x.v5, x.v6, x.v7, x.v8, x.v9, x.v10, x.v11, x.v12, x.v13, x.v14, x.v15, x.v16,
x.v17, x.v18, x.v19, rownum rn from (select amanda7.People.AddressLine1 v0, amanda7.People.AddressLine2 v1,
amanda7.People.AddrCity v2, amanda7.People.AddrProvince v3, amanda7.People.AddrPostal v4, amanda7.People.NameFirst v5,
amanda7.People.NameMiddle v6, amanda7.People.AddrStreet v7, amanda7.People.NameLast v8, amanda7.People.Phone1 v9,
amanda7.People.PeopleCode v10, amanda7.People.LicenceNumber v11, amanda7.People.FamilyRSN v12, amanda7.People.PeopleRSN v13,
amanda7.People.EmailAddress v14, amanda7.People.AddrHouse v15, amanda7.People.StatusCode v16, amanda7.People.ParentRSN v17,
amanda7.People.StatusType v18, (nvl(amanda7.People.OrganizationName, '') || nvl(amanda7.People.NameTitle, '')
|| nvl(amanda7.People.NameFirst, '') || nvl(amanda7.People.NameMiddle, '') || nvl(amanda7.People.NameLast, '') ||
nvl(amanda7.People.NameSuffix, '')) v19 from amanda7.People order by FullName desc) x where rownum <= (0 + 200)) where rn > 0;
任何人都可以帮我解决这个问题。
谢谢西坦苏
最佳答案
您遇到的问题已在 jOOQ 3.5.0 中修复:https://github.com/jOOQ/jOOQ/issues/2080
这是一个具有回归风险的重大更改,这就是该修复程序未向后移植到 jOOQ 3.4.x 版本的原因。如果您升级 jOOQ 版本,您的查询应该可以正常运行。
关于java - 如何将oracle转换为JOOQ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34647781/
我已经从 MySQL 表生成了 java 模型文件。但是现在我们正在切换到 PostgreSQL,我需要一切才能在那里工作。所以我为 PostgreSQL 配置创建了一个新的 jooq.propert
在 mysql 数据库中,我有一个字段名称 date 类型 date 该字段的值如下2019-11-05 如何在jooq中查询上面提到的日期 我试着跟随 java.util.Date date = S
我正在调查一个问题,我们看到与 jooq 相关的奇怪异常试图填充生成的 Record 类,它在其中获取数据类型错误,因为它使用 java.sql.ResultSet::getXXX(int)(基于列索
我一直在寻找一种在 jOOQ 中实现以下查询的方法,但找不到任何东西。 SELECT * FROM tableName WHERE 'this is a string' LIKE CONCAT(
我一直在寻找一种在 jOOQ 中实现以下查询的方法,但找不到任何东西。 SELECT * FROM tableName WHERE 'this is a string' LIKE CONCAT(
我有一个使用gradle-jooq-plugin-3.0.1、jooq-3.11.2 和 Spring Boot 1 的项目。当我尝试生成 JOOQ 文件时我收到以下错误消息: > Task :gen
我刚刚尝试将我的项目升级到 Java 15,现在出现以下错误: both interface org.jooq.Record in org.jooq and class java.lang.Rec
我很好奇 jOOQ 是否可以与 Quarkus 一起工作,所以我创建了一个 Gradle 项目。我收到此构建错误: Caused by: io.quarkus.creator.AppCreatorEx
来自 fetchNext(int number) 的文档 -“在获取最后一条记录后,这将方便地关闭游标。” 假设number=100,一共有1000条记录。它会在获取第 100 条记录后关闭游标,还是
在我们的项目中,概念是在配置文件中定义的。举个例子: ... ... 虽然这与 SQL 没有太大关系,但这个配置文件恰好可以映射到 S
我在我的 java gradle 项目中找到一个有效的 JOOQ 插件或其配置为最新的 JOOQ 库时遇到问题。 我找到了以下插件: https://github.com/jOOQ/jOOQ/tree
我得到了一个使用 gradle (v2.1.0) 和 jooq (v3.8.1) 生成类文件的 Ratpack 应用程序。 这是我的 build.gradle 文件: buildscript {
我有一个界面 public interface HistoryDao, H extends UpdatableRecord> extends TableDao{ default void sa
我正在使用 jOOQ 生成针对 Athena(又名 PrestoDB/Trino)运行的查询 为此,我使用了 SQLDialects.DEFAULT,它之所以有效,是因为我使用了非常基本的查询功能。
如何在jooq的查询中绑定(bind)一个数组作为参数? 这是我添加名为“someIds”的命名参数的地方 Query query = selectJoinStep.where(field("
我有一个多模块 maven 项目,我正在实现一个 ant 任务以直接从 jpa 生成 jooq 类 实体。 这些是我引用的教程: Code generation with Ant Code gener
我想在 JOOQ 中实现一个基本的 time_bucket 语句。 如果我在控制台中运行此语句,它运行得非常好: SELECT time_bucket('5 minutes', time) as t,
我关于在 jooq dsl 中编写查询的问题。 我在 Oracle 数据库中存储了一些客户端属性列表。 表结构如下: CLIENT_ATTRIBUTE_DICT (ID、CODE、DEFAULT_VA
我很惊讶地发现 JOOQ(从 3.16 开始)将时间戳绑定(bind)到 LocalDateTime。在我看来,时间戳最自然地映射到一个 Instant,它是一个 Unix 纪元时间戳。 那么我们怎样
你好,我正在方法中执行此操作 public void update(Table table, String tableName){ ArrayList firstRowInDslFormat
我是一名优秀的程序员,十分优秀!