我正在使用Jooq 3.10。我想为每个选择,更新和删除查询添加带动态值的默认条件。
示例1:
select * from table_name;
select * from table_name where org_id = dynamic_value
示例2:
select * from table_name where column_name = value;
select * from table_name where column_name = value and org_id = dynamic_value
我如何实现这一目标?
答案 0 :(得分:1)
这看起来像行级安全性的情况,可以使用VisitListener
实现,如下所述:
https://blog.jooq.org/2015/06/17/implementing-client-side-row-level-security-with-jooq
具体实现过于复杂,无法在Stack Overflow上重现,但如果您正在寻找仅限jOOQ的解决方案,那么它正是您所需要的。
并非所有数据库都支持此功能,但值得一提:
更彻底的解决方案是使用SQL视图或表值函数,并将相关谓词直接添加到这些视图或函数中。
SYS_CONTEXT
函数,在事务开始时使用相关的dynamic_value
初始化JDBC连接。dynamic_value
直接传递给该函数,该函数然后在基础表上运行查询,添加谓词。在上述两种情况下,您都必须确保不直接向表格提供任何授权,而只是向视图提供。