grails的hibernate过滤器插件是否支持表连接和多参数?

grails的hibernate过滤器插件是否支持表连接和多参数?,hibernate,grails,filter,Hibernate,Grails,Filter,我正在学习使用这个插件。通过遵循grails.org中的步骤,我成功地在单个域类中应用了过滤器。但我想知道hibernate筛选器支持条件是否跨两个表。我在下面列出了我的案例的详细信息。你能给我一些建议吗 背景: 1。我有下面的db模式(这两个表之间的关系是一个产品可以有多个ProductItems,这是一对多关系。) 另一个表:ProductItem 纵队 我想要什么? 当一个用户访问数据时,我想列出他自己创建的产品项。但只有product表具有“创建它的用户信息”。我想要的结果与执行以下s

我正在学习使用这个插件。通过遵循grails.org中的步骤,我成功地在单个域类中应用了过滤器。但我想知道hibernate筛选器支持条件是否跨两个表。我在下面列出了我的案例的详细信息。你能给我一些建议吗

背景: 1。我有下面的db模式(这两个表之间的关系是一个产品可以有多个ProductItems,这是一对多关系。)

另一个表:ProductItem

纵队


我想要什么?

当一个用户访问数据时,我想列出他自己创建的产品项。但只有product表具有“创建它的用户信息”。我想要的结果与执行以下sql语句相同:

"
select product_item.id from product_item ,product where   
product_item.product_id=product.id and product.create_uid=xxx
"
因为这个系统已经实现了。我想在不更改代码的情况下使用hibernate筛选器

我知道什么?

从文档中,我注意到hibernate过滤器的定义支持“collection”来指定另一个关系。但我担心的是我找不到任何地方来指定条件(“orderItem.order\u id=order.id”)


如果插件中有任何更新和奇特的功能来处理此问题,我不是最新的,但我以前使用过Subselect来解决此问题:

secureFilter(condition: 'product_id in (select product.id from product where product.create_uid=5)', default: true)

正如你们所知,我们可以在过滤器的定义中使用参数。与secureFilter类似(条件:“create_uid=:myParam”,类型:“string”)。但是在每次使用之前,我们需要指定参数的值
filter.setParameter('myParam',5)
我想知道在编程语言中是否存在全局变量这样的用法。在我的问题场景中,当用户登录到我们的系统后获得用户id信息时,我可以在那里设置参数的值。对于其他地方,他们可以通过指定“default:true”直接使用。我不确定我是否完全理解您。但也许这会有所帮助:看看插件中HibernateFilterFilters的来源。通过复制到apps conf dir,用您自己的实现覆盖它。根据需要启用筛选器并设置参数(例如,通过从会话、springSecurityService或类似服务检索它们)。
"
select product_item.id from product_item ,product where   
product_item.product_id=product.id and product.create_uid=xxx
"
class ProductItem{

Product product
static hibernateFilters = {
   secureFilter(condition:'create_uid=5', collection:"product", default:true)   // This doen't work 
}  
}
secureFilter(condition: 'product_id in (select product.id from product where product.create_uid=5)', default: true)