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

时间:2013-05-23 10:37:33

标签: hibernate grails filter

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

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

Table : Product
column
------------------------------
id               |  auto_increment
name             | 
create_uid       | the user id create this product

另一个表:ProductItem


id                | auto_increment
name              |
product_id        |the value specify which product it belongs to

我想要什么?

当一个用户访问数据时,我想列出他自己创建的产品项目。但只有产品表具有“创建它的用户信息”。我想要的结果与在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_id = order.id”)

class ProductItem{

Product product
static hibernateFilters = {
   secureFilter(condition:'create_uid=5', collection:"product", default:true)   // This doen't work 
}  
}

1 个答案:

答案 0 :(得分:0)

如果在插件中有任何更新,更奇特的功能来处理这个问题我不是最新的,但我以前使用子选择来解决这个问题:

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