41554 blogs · [ { "id": "01a0821a-bf1e-7368-8a9b-bcdc992b3cca", "title": "Simplifying ANTI JOIN with jOOQ Syntax", "url": "https://blog.jooq.org/simplifying-anti-join-with-jooq-syntax/", "published_at": "2026-05-07T11:26:46+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc99b910a6", "title": "Why JOIN USING Can Lead to Errors in SQL", "url": "https://blog.jooq.org/why-join-using-can-lead-to-errors-in-sql/", "published_at": "2026-05-04T14:02:39+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc9ab1259e", "title": "Managing Sensitive Data in jOOQ 3.21+ Logs", "url": "https://blog.jooq.org/managing-sensitive-data-in-jooq-3-21-logs/", "published_at": "2026-03-27T12:45:19+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc9b8a236e", "title": "Consider using JSON arrays instead of JSON objects for serialisation", "url": "https://blog.jooq.org/consider-using-json-arrays-instead-of-json-objects-for-serialisation/", "published_at": "2025-08-11T12:43:10+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc9c03276b", "title": "When SQL Meets Lambda Expressions", "url": "https://blog.jooq.org/when-sql-meets-lambda-expressions/", "published_at": "2025-03-27T13:04:44+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc9c16fd9f", "title": "Think About SQL MERGE in Terms of a RIGHT JOIN", "url": "https://blog.jooq.org/think-about-sql-merge-in-terms-of-a-right-join/", "published_at": "2025-03-13T14:45:53+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc9c3d8412", "title": "Resisting the Urge to Document Everything Everywhere", "url": "https://blog.jooq.org/resisting-the-urge-to-document-everything-everywhere/", "published_at": "2025-02-28T10:39:07+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc9d208c8c", "title": "jOOQ 3.20 released with ClickHouse, Databricks, and much more DuckDB support, new modules, Oracle type hierarchies, more spatial support, decfloat and synonym support, hidden columns, Scala 3, Kotlin 2, and much more", "url": "https://blog.jooq.org/jooq-3-20-released-with-clickhouse-databricks-and-much-more-duckdb-support-new-modules-oracle-type-hierarchies-more-spatial-support-decfloat-and-synonym-support-hidden-columns-scala-3-kotlin/", "published_at": "2025-02-20T10:27:54+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc9d4397f3", "title": "Emulating SQL FILTER with Oracle JSON Aggregate Functions", "url": "https://blog.jooq.org/emulating-sql-filter-with-oracle-json-aggregate-functions/", "published_at": "2024-06-03T12:17:41+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc9dd41ed0", "title": "Getting Top 1 Values Per Group in Oracle", "url": "https://blog.jooq.org/getting-top-1-values-per-group-in-oracle/", "published_at": "2024-03-01T09:55:41+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc9e7e827e", "title": "An Efficient Way to Check for Existence of Multiple Values in SQL", "url": "https://blog.jooq.org/an-efficient-way-to-check-for-existence-of-multiple-values-in-sql/", "published_at": "2024-02-16T14:16:45+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc9f786d04", "title": "A Hidden Benefit of Implicit Joins: Join Elimination", "url": "https://blog.jooq.org/a-hidden-benefit-of-implicit-joins-join-elimination/", "published_at": "2024-01-10T14:19:00+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdc9f9f548d", "title": "jOOQ 3.19’s new Explicit and Implicit to-many path joins", "url": "https://blog.jooq.org/jooq-3-19s-new-explicit-and-implicit-to-many-path-joins/", "published_at": "2023-12-28T14:35:14+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca02e21bf", "title": "Workaround for MySQL’s “can’t specify target table for update in FROM clause” Error", "url": "https://blog.jooq.org/workaround-for-mysqls-cant-specify-target-table-for-update-in-from-clause-error/", "published_at": "2023-12-20T14:20:29+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca10a68e6", "title": "jOOQ 3.19.0 Released with DuckDB, Trino, Oracle 23c support, join path improvements, an official gradle plugin, commercial maven repositories, policies, UDT paths, trigger meta data, hierarchies, and much more", "url": "https://blog.jooq.org/jooq-3-19-0-released-with-duckdb-trino-oracle-23c-support-join-path-improvements-an-official-gradle-plugin-commercial-maven-repositories-policies-udt-paths-trigger-meta-data-hierarchies-and/", "published_at": "2023-12-15T16:30:41+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca1f813d9", "title": "Maven Coordinates of the most popular JDBC Drivers", "url": "https://blog.jooq.org/maven-coordinates-of-the-most-popular-jdbc-drivers/", "published_at": "2023-12-13T11:25:44+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca26999f7", "title": "To DAO or not to DAO", "url": "https://blog.jooq.org/to-dao-or-not-to-dao/", "published_at": "2023-12-06T13:41:52+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca309bce6", "title": "JDBC Connection URLs of the Most Popular RDBMS", "url": "https://blog.jooq.org/jdbc-connection-urls-of-the-most-popular-rdbms/", "published_at": "2023-12-01T11:12:59+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca3a70a35", "title": "How to Generate Package Private Code with jOOQ’s Code Generator", "url": "https://blog.jooq.org/how-to-generate-package-private-code-with-jooqs-code-generator/", "published_at": "2023-06-28T15:54:18+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca3cf3ccb", "title": "How to Pass a Table Valued Parameter to a T-SQL Function with jOOQ", "url": "https://blog.jooq.org/how-to-pass-a-table-valued-parameter-to-a-t-sql-function-with-jooq/", "published_at": "2023-04-25T12:16:30+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca46ec407", "title": "How to Turn a List of Flat Elements into a Hierarchy in Java, SQL, or jOOQ", "url": "https://blog.jooq.org/how-to-turn-a-list-of-flat-elements-into-a-hierarchy-in-java-sql-or-jooq/", "published_at": "2023-03-24T15:45:28+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca496587f", "title": "3.18.0 Release with Support for more Diagnostics, SQL/JSON, Oracle Associative Arrays, Multi dimensional Arrays, R2DBC 1.0", "url": "https://blog.jooq.org/3-18-0-release-with-support-for-more-diagnostics-sql-json-oracle-associative-arrays-multi-dimensional-arrays-r2dbc-1-0/", "published_at": "2023-03-08T16:34:56+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca50ed2ed", "title": "How to use jOOQ’s Converters with UNION Operations", "url": "https://blog.jooq.org/how-to-use-jooqs-converters-with-union-operations/", "published_at": "2023-03-02T11:18:17+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca52bd046", "title": "How to Write a Derived Table in jOOQ", "url": "https://blog.jooq.org/how-to-write-a-derived-table-in-jooq/", "published_at": "2023-02-24T09:18:48+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca5f5af9a", "title": "The Performance Impact of SQL’s FILTER Clause", "url": "https://blog.jooq.org/the-performance-impact-of-sqls-filter-clause/", "published_at": "2023-02-06T07:51:38+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca5fd4af1", "title": "Emulating Window Functions in MySQL 5.7", "url": "https://blog.jooq.org/emulating-window-functions-in-mysql-5-7/", "published_at": "2023-01-20T11:07:00+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca62ae3ff", "title": "Why You Should Execute jOOQ Queries With jOOQ", "url": "https://blog.jooq.org/why-you-should-execute-jooq-queries-with-jooq/", "published_at": "2023-01-18T11:46:25+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca66e5f6d", "title": "jOOQ’s R2DBC LoggingConnection to log all SQL statements", "url": "https://blog.jooq.org/jooqs-r2dbc-loggingconnection-to-log-all-sql-statements/", "published_at": "2023-01-17T10:12:05+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca725fedd", "title": "When to Use jOOQ and When to Use Native SQL", "url": "https://blog.jooq.org/when-to-use-jooq-and-when-to-use-native-sql/", "published_at": "2022-12-08T13:53:02+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca7a6282c", "title": "LATERAL is Your Friend to Create Local Column Variables in SQL", "url": "https://blog.jooq.org/lateral-is-your-friend-to-create-local-column-variables-in-sql/", "published_at": "2022-11-04T08:56:17+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca7b50b29", "title": "Calling Procedures with Default Parameters using JDBC or jOOQ", "url": "https://blog.jooq.org/calling-procedures-with-default-parameters-using-jdbc-or-jooq/", "published_at": "2022-10-21T14:35:39+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca87778df", "title": "Using jOOQ’s Implicit Join From Within the JOIN .. ON Clause", "url": "https://blog.jooq.org/using-jooqs-implicit-join-from-within-the-join-on-clause/", "published_at": "2022-09-13T07:29:59+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca8b3feab", "title": "A Brief Overview over the Most Common jOOQ Types", "url": "https://blog.jooq.org/a-brief-overview-over-the-most-common-jooq-types/", "published_at": "2022-09-06T12:30:37+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca8f2681c", "title": "How to Plot an ASCII Bar Chart with SQL", "url": "https://blog.jooq.org/how-to-plot-an-ascii-bar-chart-with-sql/", "published_at": "2022-09-01T08:25:29+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdca9df5b82", "title": "The Second Best Way to Fetch a Spring Data JPA DTO Projection", "url": "https://blog.jooq.org/the-second-best-way-to-fetch-a-spring-data-jpa-dto-projection/", "published_at": "2022-08-30T14:48:44+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcaa9987a2", "title": "Cannot resolve symbol ‘VERSION_3_17’ in jOOQ generated code", "url": "https://blog.jooq.org/cannot-resolve-symbol-version_3_17-in-jooq-generated-code/", "published_at": "2022-08-30T06:56:20+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcaab7274a", "title": "jOOQ 3.17 Supports Implicit Join also in DML", "url": "https://blog.jooq.org/jooq-3-17-supports-implicit-join-also-in-dml/", "published_at": "2022-08-25T08:07:00+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcaaf0453c", "title": "A Condition is a Field", "url": "https://blog.jooq.org/a-condition-is-a-field/", "published_at": "2022-08-24T09:09:11+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcab6116cb", "title": "The Many Ways to Return Data From SQL DML", "url": "https://blog.jooq.org/the-many-ways-to-return-data-from-sql-dml/", "published_at": "2022-08-23T15:02:04+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcac1e4496", "title": "How to Integration Test Stored Procedures with jOOQ", "url": "https://blog.jooq.org/how-to-integration-test-stored-procedures-with-jooq/", "published_at": "2022-08-22T12:36:00+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcac367d48", "title": "Using H2 as a Test Database Product with jOOQ", "url": "https://blog.jooq.org/using-h2-as-a-test-database-product/", "published_at": "2022-08-19T07:25:43+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcacbf7329", "title": "The Best Way to Call Stored Procedures from Java: With jOOQ", "url": "https://blog.jooq.org/the-best-way-to-call-stored-procedures-from-java-with-jooq/", "published_at": "2022-07-28T13:11:59+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcad694a25", "title": "Create Dynamic Views with jOOQ 3.17’s new Virtual Client Side Computed Columns", "url": "https://blog.jooq.org/create-dynamic-views-with-jooq-3-17s-new-virtual-client-side-computed-columns/", "published_at": "2022-06-30T14:46:35+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcad7180e5", "title": "3.17.0 Release with Computed Columns, Audit Columns, Pattern Matching, Reactive Transactions and Kotlin Coroutine Support", "url": "https://blog.jooq.org/3-17-0-release-with-computed-columns-audit-columns-pattern-matching-reactive-transactions-and-kotlin-coroutine-support/", "published_at": "2022-06-22T15:15:05+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcae521110", "title": "How to Filter a SQL Nested Collection by a Value", "url": "https://blog.jooq.org/how-to-filter-a-sql-nested-collection-by-a-value/", "published_at": "2022-06-10T14:32:38+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcae968055", "title": "The Performance of Various To-Many Nesting Algorithms", "url": "https://blog.jooq.org/the-performance-of-various-to-many-nesting-algorithms/", "published_at": "2022-06-09T10:15:50+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcaf07d671", "title": "Changing SELECT .. FROM Into FROM .. SELECT Does Not “Fix” SQL", "url": "https://blog.jooq.org/changing-select-from-into-from-select-does-not-fix-sql/", "published_at": "2022-05-31T08:39:55+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcafe6f207", "title": "The Many Different Ways to Fetch Data in jOOQ", "url": "https://blog.jooq.org/the-many-different-ways-to-fetch-data-in-jooq/", "published_at": "2022-05-19T07:29:09+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcb04a8375", "title": "Setting the JDBC Statement.setFetchSize() to 1 for Single Row Queries", "url": "https://blog.jooq.org/setting-the-jdbc-statement-setfetchsize-to-1-for-single-row-queries/", "published_at": "2022-05-11T08:55:41+00:00" }, { "id": "01a0821a-bf1e-7368-8a9b-bcdcb08a6f4b", "title": "How to Typesafely Map a Nested SQL Collection into a Nested Java Map with jOOQ", "url": "https://blog.jooq.org/how-to-typesafely-map-a-nested-sql-collection-into-a-nested-java-map-with-jooq/", "published_at": "2022-05-09T10:06:51+00:00" } ] posts Claim your blog
Back to jOOQ
Blog · corpus.blog/blogs/blog.jooq.org/posts

jOOQ

blog.jooq.org

2026

2025

2024

2023

2022