0

特定のエンティティ (同じタイプ) に類似したエンティティを照会したい。類似度は (最も単純なケースでは) メンバー コレクション内の同じアイテムの数として定義されます。

JPQL/HQL クエリはどのようになりますか?

私が試したこと:

       SELECT wuSimilar, COUNT(*) AS score FROM WorkUnit wuBase 
           LEFT JOIN wuBase.tags AS wubTags
           LEFT JOIN WorkUnit wuSimilar ON wubTags IN wuSimilar.tags
           WHERE wuBase = :base
           GROUP BY wuSimilar
           ORDER BY score DESC

これは基本的に検索であるため、Hibernate Search を使用できますが、やり過ぎではないかどうかはわかりません。あるいは、ElasticSearch のようなものにもオープンです。このプロジェクトでは、おそらく別の検索はありません。

4

1 に答える 1

0

SQL の知識に頼りすぎていました。JPQL はJOIN、宣言されたエンティティ関係にのみ使用します。

で式で定義されたリストを選択する場合、WHEREカンマ結合である必要があります。

       SELECT wuSimilar, COUNT(*) AS score FROM WorkUnit wuBase 
           LEFT JOIN wuBase.tags AS wubTags
           , WorkUnit wuSimilar
           WHERE wuBase = :base AND wubTags IN (wuSimilar.tags)
           GROUP BY wuSimilar
           ORDER BY score DESC

動作するようです、テストに行きます。

于 2013-02-19T08:34:40.767 に答える