【问题标题】:Hibernate Query : How to search in multiple columns?Hibernate Query:如何在多列中搜索?
【发布时间】:2020-11-12 16:31:48
【问题描述】:

我有一张桌子 XYZ。它有多个包含 tag1、tag2 和 tag3 的列。只有 3 个标签列。

数据库中的条目如下:

Header: id, tag1, tag2, tag3
id1, ABC
id2, ABC, XYZ
id3
id4 PQR, XYZ
id5 ABC, XYZ, PQR

如果用户通过 [ABC] 则应返回 id1、id2 和 id3。 如果用户通过 [ABC, PQR, XYZ] 那么它应该返回 id5。

它的休眠查询是什么?

【问题讨论】:

    标签: sql hibernate


    【解决方案1】:

    只需使用 OR 谓词。

    entityManager.createQuery("FROM Entity e WHERE e.tag1 IN :list OR e.tag2 IN :list OR e.tag3 IN :list")
        .setParameter("list", userInputList)
        .getResultList();
    

    【讨论】:

    • 没有。这不适用于所有情况。我通过迭代列表并在(e.tag1,e.tag2,e.tag3)中使用“'value'”来解决它。仍然感谢您的回复。这是我的代码:if(!CollectionUtils.isEmpty(getTagList())) { query += " ( "; for (int index = 0; index
    • 不知道为什么您认为这不起作用,但如果您有适合您的解决方案,那没关系。
    • 假设记录 #1 有一个标签 TAG1。记录#2 有两个标签 TAG1 和 TAG2。列表是 [TAG1, TAG2]。如果我写查询 e.tag1 IN :list OR e.tag2 IN :list 它也会返回第一个结果(因为在记录 #1 中找到一个项目)。但正如我在问题中提到的,我只在这种情况下需要记录#2。不过谢谢你的回复。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2016-02-24
    • 1970-01-01
    • 2016-02-21
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多