问题标签 [jooq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
130 浏览

java - 如何排除字段被复制

Jooq 提供了一个from()方法,可以让您将 DTO 复制到记录中。

但是,我只想复制一些字段以防止客户端更新只读信息。

理想情况下,我希望能够编写如下内容:

或者

并且只复制了三个字段。

当然,它可以通过例如手动调用 getter/setter 来完成,但我希望有一种更简单的方法。

0 投票
1 回答
385 浏览

java - jooq,插入时填充字段值,类似于record_timestamp

我的数据库中的每个表都有这些固定列:

  • 记录版本
  • 记录时间戳
  • 创建时间

由于 jooq功能record_version 和 record_timestamp 被自动处理。

是否可以集中和自动化create_time的维护?在内部,jooq 已经在管理前两个特殊领域。

我可以在某处放置一个处理程序来填充 create_time 值吗?这样做,我可以删除一些样板代码来初始化这个字段。

我在每个表上都有另一个字段:update_by_account;无论如何,如果我能够管理前面提到的字段(create_time),我想我也会处理这个字段。

提前致谢

0 投票
1 回答
536 浏览

java - 使用 jooq 生成一个 InsertSelect

我想在工厂中实现这样的功能:

但我无法访问 org.jooq.impl.InsertSelectQueryImpl,我想使用 InsertOnDuplicateStep 来设置 onDuplicateKeyUpdate()

卢卡斯,如何实现它?

我想得到这样的sql:

0 投票
1 回答
1194 浏览

java - 在 Jooq 中缓存查询

我尝试在项目中使用 jooq,但出于性能原因,我想缓存查询。在性能考虑部分的用户手册中,提到了查询缓存,但没有关于如何实现它的示例。所以我尝试缓存一个查询(例如 SimpleSelectConditionStep),如下所示:

我的软件是一个多线程 Web 应用程序,但可以保证两个不同的线程不能同时使用相同的查询(池在再次放入池之前不会返回相同的查询)。

我知道工厂不是线程安全对象,但我想知道在代码中使用这样的查询会导致问题吗?

0 投票
1 回答
491 浏览

java - 我们如何在 JOOQ 中拥有@variable?

我正在尝试在 Jooq 中实现类似于下面的 MySql 查询:

我们如何在 JOOQ 中拥有 @variable ?

注意:我知道 JOOQ 中 CASE WHEN 的等价物,但只想知道@variable。

Jooq 版本:3.0.1

0 投票
1 回答
881 浏览

java - JOOQ 中的行级安全性实现

我想使用 JOOQ 库在 Java 中实现 oracle 行级安全类型的功能

这是一个示例 JOOQ 查询代码:

上面的代码将生成如下 SQL:

我想添加一个 where 子句来过滤特定于用户安全的数据,如下所示:

0 投票
2 回答
1240 浏览

java - 在 Jooq 中创建 VIEW 语句

我正在尝试使用 Jooq 创建一个视图语句,我们该怎么做?

或者我们还有其他选择吗?

Jooq 版本:3.0.1

0 投票
1 回答
3072 浏览

java - jooq 批量插入问题(复制第一行)

我正在尝试使用 jOOQ 批量插入我的 postgres 数据库。我想做的是:

http://www.jooq.org/doc/3.1/manual-single-page/#batch-execution所述

为了清楚起见,我想在一个查询中插入数千行,而不是使用包含数千个查询的批处理:

问题是:要到达 BatchBindStep 接受 .bind() 调用的地步,需要使用一个参数调用 context.batch,该参数将 .values(...) 作为最后一次调用。在文档中指出,“?” 必须使用。这是作为字符串类型的,并且可能仅适用于所有列都是 varchars 的表,因为 jOOQ 进行静态类型。这让我很恼火。我尝试使用任意默认值 (null,0...) 只是为了通过 values(...) 步骤,希望由于这些“值”不是我想要批量插入的真正值,它们会被覆盖后来被绑定。

事实上,他们会的。第一行两次。这完全让我感到困惑。

重复一遍,我可以进行批量插入,但第一行被插入两次。我的直觉是它与“值”调用有关(至少 DSL 中存在与打字有关的概念问题)。

有没有人尝试使用 jOOQ 进行批量插入,如果没有两次插入第一行,如何做到这一点?

PS 当我尝试使用 .values("?", "?", "?", "?", "?", "?", "?", "?", "?","?" ,"?","?","?","?","?","?","?","?","?","?","?","?") : "方法值(Integer, String, String, String, String, String, String, String, String, String, Double, Double, String, String, String, String, Timestamp, String, String, String, String, String) in InsertValuesStep22 类型不适用于参数(字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串, String, String)" 很明显,打错了,当我尝试改编文档中的示例时。

0 投票
2 回答
8563 浏览

java - 将 jooq 中的获取/结果映射到特定记录

当我目前使用 Jooq 查询时,我明确地将每个记录对象转换为预期的记录类型。

使用 Jooq 是否可能将结果直接转换为所需的记录类型?

如(这不会编译):

0 投票
8 回答
19714 浏览

java - 用更轻的解决方案替换完整的 ORM(JPA/Hibernate):推荐的加载/保存模式?

我正在开发一个新的 Java Web 应用程序,并且我正在探索新的方法(对我来说是新的!)来保存数据。我主要有 JPA 和 Hibernate 的经验,但除了简单的情况外,我认为这种完整的 ORM 会变得相当复杂。另外,我不太喜欢和他们一起工作。我正在寻找一个新的解决方案,可能更接近 SQL。

我目前正在研究的解决方案:

但是与 Hibernate 相比,我担心这些解决方案有两个用例。我想知道这些用例的推荐模式是什么。


用例 1 - 获取一个实体并访问它的一些关联的子实体和孙实体。

  • 假设我有一个Person实体。
    • Person有一个关联的Address实体。
      • Address有一个关联的City实体。
        • 这个City实体有一个name属性。

从 person 实体开始访问城市名称的完整路径是:

现在,假设我PersonService使用以下方法从 a 加载 Person 实体:

使用 Hibernate,Person可以根据需要延迟加载person.address.city.name

但是使用我正在调查的 3 个解决方案中的任何一个,它都更加复杂。使用这些解决方案,处理此用例的推荐模式是什么?前期,我看到了 3 种可能的模式:

  1. 所有必需的关联子实体和孙实体都可以由所使用的 SQL 查询急切地加载。

    但是我在这个解决方案中看到的问题是,可能有一些其他代码需要从实体访问其他实体/属性路径Person。例如,也许某些代码需要访问person.job.salary.currency. 如果我想重用findPersonById()已有的方法,那么 SQL 查询将需要加载更多信息!不仅是关联address->city实体,还有关联job->salary实体。

    现在如果有10 个其他地方需要从 person 实体开始访问其他信息怎么办?我是否应该总是急切地加载所有可能需要的信息?或者可能有 12 种不同的服务方法来加载人员实体?:

    但是每次我使用一个Person实体时,我都必须知道它加载了什么,什么没有加载……这可能很麻烦,对吧?

  2. 在实体的getAddress()getter方法中Person,是否可以检查该地址是否已经加载,如果没有,则延迟加载它?这是现实生活应用中经常使用的模式吗?

  3. 是否有其他模式可用于确保我可以从加载的模型中访问我需要的实体/属性?


用例 2 - 保存实体并确保其关联和修改的实体也被保存。

我希望能够Person使用此方法保存实体PersonService

如果我有一个Person实体并且我更改person.address.city.name为其他内容,我如何确保在City保存时实体修改将保持不变Person?使用 Hibernate,可以很容易地将保存操作级联到关联的实体。我正在调查的解决方案呢?

  1. 我是否应该使用某种标志来知道当我保存此人时还必须保存哪些关联实体?

  2. 是否有任何其他已知模式可用于处理此用例?


更新:在 JOOQ 论坛上有一个关于这个问题的讨论。