在保持类型的同时使用条件过滤JOOQ生成的表

问题描述 投票:2回答:1

我从我的数据库生成了许多JOOQ类。我想在保持表格的强大类型的同时,轻松地按客户过滤我的表格。

这是我希望能够做到的:

// Generated class books
JBooks books = JBooks.BOOKS;

// get ownershipCheck (this could be more complicated, possibly joining multiple tables)
Condition ownershipCheck = books.customer().ID.eq(currentCustomer);

// desired output that I can do further operations on
JBooks filteredBooks = selectFrom(books).where(ownershipCheck).asTable();


// a bunch of random operations using the functionality from JBooks
db.select(filteredBooks.AUTHOR, filteredBooks.PUBLISH_DATE, ...etc)

不幸的是,我不能这样做。我得到了一个Table<JBooksRecord>,我认为没有办法将我的新桌子投射到JBooks

java sql jooq
1个回答
1
投票

这正在通过以下方式进行:

  • #8012“覆盖生成的表中的Table.where(Condition)方法”
  • #1969“添加对jOOQ中表达的观点的支持”

简而言之,表可以接受谓词,结果是同一表类型的修改表,公开相同类型的安全列表达式。在生成的SQL中,这可以生成派生表,也可以内联到调用SQL语句中。

从jOOQ 3.11开始,这些功能尚不可用。

© www.soinside.com 2019 - 2024. All rights reserved.