1

このプラグインの使い方を学んでいます。grails.org の手順に従って、単一のドメイン クラスにフィルターを適用することに成功しました。しかし、休止状態フィルターのサポート条件が 2 つのテーブルにまたがるかどうかを知りたいです。私のケースの詳細情報を以下にリストします。アドバイスをいただけますか?

背景: 1.以下の db スキーマがあります (これら 2 つのテーブル間の関係は 1 つの製品であり、1 対多の関係である複数の ProductItem を持つことができます)。

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

私は何をしたいですか?

1人のユーザーがデータにアクセスしたときに、自分が作成した商品Itemsを一覧表示したい。ただし、「作成者情報」を持つのは product テーブルだけです。私が望む結果は、以下のSQLステートメントを実行することと同じです:

"
select product_item.id from product_item ,product where   
product_item.product_id=product.id and product.create_uid=xxx
"

システムがすでに実装されているため。コードを変更せずに休止状態フィルターを使用したいと思います。

私が知っていること?

ドキュメントから、休止状態フィルターの定義が別の関係を指定するための「コレクション」をサポートしていることに気付きました。しかし、私の懸念は、条件を指定する場所が見つからないことです ("orderItem.order_id = order.id ")

class ProductItem{

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

1 に答える 1

0

プラグインでこれを処理するための新しくて凝った機能があるかどうか、私は最新ではありませんが、以前はこのケースに取り組むためにサブセレクトを使用していました:

secureFilter(condition: 'product_id in (select product.id from product where product.create_uid=5)', default: true)
于 2013-05-23T20:42:08.503 に答える