5

以下のように、タグのjava.Listを持つProductエンティティがあると想像してみましょう。

@Entity
public class Product impements Serializable{
   ...
   private List<String> tags;
}

また、Car、Motocycle、Planeなどのタグのいずれかでタグ付けされた製品(たとえば)を検索したいユーザーがいます。

したがって、検索に関しては、エンティティにタグのリストと検索タグのリストがあります。必要なのは、製品のタグリストに少なくとも1つを含めることだけです。そのようなクエリの書き方がわかりません。ヘルプのためのthx

4

3 に答える 3

6

beny23が彼のソリューションを投稿する前に、私はそれを追加して修正しました

SELECT p FROM Product p, IN (p.tags) t where t in (:searchList)

しかし、彼の答えも正しいです。

于 2013-02-01T12:35:17.993 に答える
5

これは、次のHQLクエリを使用して実行できます。

session.createQuery("from Product p join p.tags t where t = :tag")
       .setString("tag", tagToSearchFor)
于 2013-02-01T12:19:45.167 に答える
0

次のようなものを試してください。

@Entity
public class Product implements Serializable{
   ...
   private List<String> tags;

   public boolean contains(List<String> inputTags) {
        for (String tag : inputTags) {
            if(tags.contains(tag)){
                return true;                
            }
        }
        return false;
    }
}

または、2つのforeachを実行して、

if(inputTag.equals(productTag)) return true;
于 2013-02-01T12:03:57.570 に答える