java - Jooq 使用软删除查询表
问题描述
我想写软删除记录而不是在 jooq 中硬删除它们。但是用软删除查询表呢?
所以我不想写
SELECT id, name FROM users WHERE DELETED=false
但相反,我只想写
SELECT id, name FROM users
解决方案
我们目前不支持这种开箱即用的 SQL 转换,但您可以使用VisitListener
. 软删除是一个更简单的行级安全案例,如本文所述:
https ://blog.jooq.org/implementing-client-side-row-level-security-with-jooq
如何实现这一点的一个示例方法是向所有生成的表添加一个接口,如果它们有一个DELETED
列:
interface SoftDeletable {
TableField<? Boolean> deleted();
}
然后在你的 中匹配它VisitListener
,添加一个谓词以防FROM
子句包含对该表的引用。然后,您还可以对别名表、派生表等进行这项工作。
我们正在努力改进 jOOQ 3.13 和未来版本中 jOOQ 的内部查询对象模型,以便这些用例比使用VisitListener
. 具体来说,我们的路线图支持软删除:https ://github.com/jOOQ/jOOQ/issues/2683
推荐阅读
- java - 使用 sqlite 和 android 11 打开数据库
- python - 错误使用 Simpy 资源
- oop - 需要帮助理解 Go 中的导出变量
- ethereum - 是否可以使用其他项目的 ntf 构建游戏?
- sql-server - 在 SQL Server 中创建 windows AD 登录
- swiperjs - 如何引用 SwiperJS 的“独立”非捆绑版本
- microsoft-graph-api - Graph API(规划器)中 Tasks.ReadWrite 和 Tasks.ReadWrite.Shared 之间的区别
- angular - 角度数据源不排序
- c# - 如何确保在 C# 中完成任务
- flutter - Flutter for IOS 中的 ConnectyCube 推送通知