0

こんにちは、休止状態の基準に関連する 2 つの問題があります

多くの色を含む次の製品があります。

少なくとも RED と GREEN を含む製品を見つけたいです。

Product class

    String id;

    name;

    style;

    List<Color> colors{};

Color class

    id

    color

1) 検索を行うたびに、色の数に応じて各製品が表示されます。たとえば、製品 A に赤、緑、青がある場合、3 回表示されます。

FetchMode: Select を使用しましたが、変更されていないようです。

私が考えることができる唯一の可能な解決策は、それらをハッシュセットに挿入し、主キーのみのハッシュコードと等しいメソッドを書き直すことです

2) 検索に最も近いものに従ってソートされたクエリを返すにはどうすればよいですか?

たとえば、スタイルと色の赤、緑を検索します。

スタイルカラーとレッドグリーンがマッチする商品です

4

1 に答える 1

1

1)結果を区別する必要があります。

FetchModeを変更する必要はありません。

こちらの記事をご覧ください

setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)

2)ええと...最も近いものを自動的に見つけて注文するような基準機能はありません

とにかく、同様の関数を作成する最も簡単な方法は、setFetchの代わりにcreateAliasでaddOrderを使用することです

ct.createAlias("colors", "cs")
  .add( Restrictions.like("style", value + "%"))
  .add( Restrictions.in("color", colorsArray ))
  .addOrder( Order.asc("style"))
  .addOrder( Order.asc("cs.color"))

ここにあらゆる種類の一致メソッドを書くことはできません。

ここで制限のさまざまな表現を参照してください

于 2012-07-11T04:10:48.927 に答える