2011-01-24 6 views
0

私はエンティティのためにSeam-genによって生成されたEntityQuery - addressListを持っていますAddressSeam - エンティティクエリ - 動的制限

アドレスには、streetNamecityというフィールドがあるので、Seam-genが制限を生成します。

私はエンティティクエリーを次のような制限で拡張したいと考えています: 私は#{addressList.keyVal}で顔のコンテキストで設定できるフィールド 'keyVal'を持っています。 keyValaaa bbb cccです。ここでクエリには、すべてのエンティティを検索するための制限が追加されます。

streetName like '%aaa%' or streetName like '%bbb%' or streetName like '%ccc%' 
or city like '%aaa%' or city like '%bbb%' or city like '%ccc%' 

これを達成する方法はありますか?私は本当にくっついている。

答えて

0

問題は、EntityQueryが制限の複数値バインドをサポートしていないことです。 https://issues.jboss.org/browse/JBSEAM-1065

あなたの基準クラスを創造的に使用することで、時々この問題を回避することができます。

クエリを変更することがあります。

private static final String[] RESTRICTIONS = { 
    "lower(concat(s.firstName, concat(' ', s.lastName))) like concat('%', 
       concat(lower(#{criteria.staffName}), '%'))"}; 

がうまくいけば、これはあなたにいくつかのアイデアを与える:私は、単一のstaffName入力を持っており、たとえば、私は、入力などの入力やスタッフの最後の名前のようなスタッフの最初の名前は、私はこのように私のクエリを書くことができる場所を照会する必要があります。

+0

私はいくつかのコンテキストパラメータの値を得ることができます(私の場合は '#{addressList.keyVal}')。私は次にgetEjbql()メソッドをオーバーライドし、値に基づいていくつかの制限を追加することができます... – androdevo

関連する問題