0

addressListSeam-gen によって Entity に対して生成された EntityQuery がありAddressます。

address に次のフィールドがあるとしましょう:streetNamecity、したがって Seam-gen はそれらの制限を生成します。

次の制限付きで EntityQuery を拡張したいと思います#{addressList.keyVal}keyValだとしましょうaaa 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%'

これを達成する方法について何か提案はありますか?私は本当に立ち往生しています。

4

1 に答える 1

0

問題は、EntityQuery が制限に対する複数の値のバインディングをサポートしていないことです。https://issues.jboss.org/browse/JBSEAM-1065を参照して ください。

基準クラスを創造的に使用することで、これを回避できる場合があります。

クエリの変更を検討できる場合があります。たとえば、単一の staffName 入力があり、入力のようなスタッフの名または入力のようなスタッフの姓を照会する必要がある場合、次のようにクエリを記述できます。

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

うまくいけば、これでいくつかのアイデアが得られます。

于 2011-01-24T20:16:12.920 に答える