我从数据库中生成了许多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的方法。

最佳答案

正在通过以下方法进行研究:


#8012“在生成的表中重写Table.where(Condition)方法”
#1969“添加对以jOOQ表示的视图的支持”


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

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

10-06 05:35