如何在 Grails 4 中添加休眠过滤器
How to add hibernate filter in Grails 4
我想为特定域添加全局休眠过滤器,以使我的查询尽可能干净。
在以前的项目中,我使用的是 grails-hibernate-filter 插件,但对于最新的 GORM 版本,它不是 working/available。
如何手动将 hibernate fiter 添加到特定域 class?
我找不到相关的文档。
根据评论补充:
当前应用程序已经使用基于鉴别器的多租户来支持多租户。现在我需要进一步区分每个租户。
以这个例子域为例:
class Vehicle implements MultiTenant<Vehicle> {
String manufacturer
String color
static mapping = {
tenantId name:'manufacturer'
}
}
目前用户刚刚为其租户获取所有车辆。
现在我想提供一种方法,让用户可以为其租户获得车辆和特定颜色。我不想为每个查询添加颜色条件。相反,我想向 Vehicle
添加一个休眠过滤器。使用休眠插件我可以做类似的事情:
static hibernateFilters = {
colorFilter(condition: 'color = :color', types: 'string')
}
我在升级过程中遇到了同样的情况。我评估了使用各种补丁将 grails-hibernate-filter 插件变为现实的选项,但感觉就像死胡同。
因为我主要使用 multi-tenancy 的插件,Grails built-in 对 multi-tenancy 的支持在一些迂回之后提供了一个很好的替代品。
如果您的 use-case 不同(比添加的租户 ID 更复杂),您可能需要查看 Grails 3+ 中查询的 DRY 重用。在我决定使用 pure multi-tenancy.
之前,我在那个方向做了一些研究
我没有尝试手动添加休眠过滤器,而是找到了与 Grails 4 一起使用的 grails-hibernate-filter 插件的 fork。
似乎按预期工作。至少满足我目前的要求。
我想为特定域添加全局休眠过滤器,以使我的查询尽可能干净。
在以前的项目中,我使用的是 grails-hibernate-filter 插件,但对于最新的 GORM 版本,它不是 working/available。
如何手动将 hibernate fiter 添加到特定域 class?
我找不到相关的文档。
根据评论补充:
当前应用程序已经使用基于鉴别器的多租户来支持多租户。现在我需要进一步区分每个租户。
以这个例子域为例:
class Vehicle implements MultiTenant<Vehicle> {
String manufacturer
String color
static mapping = {
tenantId name:'manufacturer'
}
}
目前用户刚刚为其租户获取所有车辆。
现在我想提供一种方法,让用户可以为其租户获得车辆和特定颜色。我不想为每个查询添加颜色条件。相反,我想向 Vehicle
添加一个休眠过滤器。使用休眠插件我可以做类似的事情:
static hibernateFilters = {
colorFilter(condition: 'color = :color', types: 'string')
}
我在升级过程中遇到了同样的情况。我评估了使用各种补丁将 grails-hibernate-filter 插件变为现实的选项,但感觉就像死胡同。
因为我主要使用 multi-tenancy 的插件,Grails built-in 对 multi-tenancy 的支持在一些迂回之后提供了一个很好的替代品。
如果您的 use-case 不同(比添加的租户 ID 更复杂),您可能需要查看 Grails 3+ 中查询的 DRY 重用。在我决定使用 pure multi-tenancy.
之前,我在那个方向做了一些研究我没有尝试手动添加休眠过滤器,而是找到了与 Grails 4 一起使用的 grails-hibernate-filter 插件的 fork。
似乎按预期工作。至少满足我目前的要求。