[英]Fetching One to Many associations with JooQ
我正在嘗試按照這篇文章反序列化與 JooQ(沒有代碼生成)的一對多關聯。
這是我的目標課程。
public class Author {
private Long id;
private String name;
private List<Book> books;
}
public class Book {
private String name;
}
我的 JooQ 查詢如下:
dslContext
.select(table("authors").asterisk(),
field(
select(jsonArrayAgg(
jsonObject(
jsonEntry("name", field("books.name")))))
.from(table("books"))
.join(table("authors"))
.on(field("books.author_id").eq(field("authors.id")))
.where(field("emails.collection_case_id")
.eq(field("collection_cases.id")))
).as("books"))
.from(table("authors"))
.where(trueCondition())
.fetchInto(Author.class);
jsonObject()
方法對我來說沒有按預期工作。 生成的 SQL 語句如下所示:
select authors.*, (select json_agg(json_build_object(?, books.name)) from books join authors ...
翻譯后的 postgres 查詢沒有正確替換json_build_object
的 key 屬性,這會導致 SQL 異常。
PS:我使用 JooQ 3.14.0 和 postgres 11.5
雖然我無法使用各種 PostgreSQL 服務器和 JDBC 驅動程序版本在我這邊重現這個問題,但這里的簡單解決方法是使用DSL.inline(String)
來防止 jOOQ 為json_build_object()
函數參數生成綁定變量:
jsonEntry(inline("name"), field("books.name"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.