我从数据库中生成了许多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开始,这些功能尚不可用。