当前位置: 首页 > 面试题库 >

使用条件API在字符串集合中获取具有特定元素的所有对象

宋子辰
2023-03-14
问题内容

我正在尝试建立一个hibernate条件查询,以查找在集合中具有特定元素的实体。

我们可以以如下所示的Book对象为例:

public class Book {
  private Long id;
  private String title;
  private Set<String> authors = new HashSet<String>();
}

实体的映射如下:

<class name="Book" table="Book">
    <id name="id" column="BOOK_ID">
        <generator class="native"/>
    </id>
    <property name="title"/>
    <set name="authors" table="Book_Authors">
        <key column="BOOK_ID"/>
        <element type="string" column="AUTHORS"/>
    </set>
</class>

现在,我想找出马特写的那些书。使用纯SQL,我可以执行以下查询:

String author = "Matt";
String query =  "SELECT * FROM Book " + 
                "WHERE BOOK_ID IN " +
                "(SELECT BOOK_ID FROM Book_Authors " + 
                "WHERE authors = :author )";
List<Book> result = session.createSQLQuery(query)
        .addEntity(Book.class)
        .setParameter("author", author)
        .list();

这一切都很好,我得到了马特参与写作的所有书籍。但是,我从事的项目使用的是Criteria
API而不是原始SQL,而且我还没有找到一种以这种形式表示相同查询的方法。我看了一下Restrictions
API,发现的最接近的是Restions.in(propertyName,collection),但它的工作方式却相反(对象中有一个值,许多要匹配的值)。

有任何想法吗?


问题答案:

目前,最简单的方法是使用sql限制:

criteria.add(Restrictions.sqlRestriction("BOOK_ID IN " +
                "(SELECT BOOK_ID FROM Book_Authors " + 
                "WHERE authors = " + author + " )"));

或者,您可以编写自己的标准。



 类似资料:
  • smembers key 返回key对应set的所有元素,结果是无序的,集合元素很多时会阻塞,生产上禁用!

  • 我想创建一个搜索栏,根据输入的值获取所有用户。我不知道怎样才能做到最好。基本上,我想获取集合用户名中包含一些输入字符串的所有文档

  • 问题内容: 如何使用jQuery选择应用了特定CSS属性的所有元素?例如: 如何通过名为“四舍五入”的属性进行选择? CSS类名非常灵活。 如何将这两个操作替换为一个操作。也许是这样的: 有什么更好的方法吗? 问题答案: 您不能(使用CSS选择器)根据已应用于它们的CSS属性来选择元素。 如果您想手动执行此操作,则可以选择文档中的每个元素,在它们上循环,然后检查您感兴趣的属性的计算值(尽管这可能仅

  • 我有一个html如下所示 如您所见,在父div下有四个子div,它包含类;第三个子div包含一个额外的类。我想在包含类的子项之前选择所有子项。注任何子级都可以包含类,并且在任何情况下,我都希望所有子级位于它之前。 这就是我所做的 但在本例中它也选择最后一个子项。在使用JavaScript选择类之前,我如何确保只有子类? 我在stackoverflow中发现了一个类似的问题:在element wit

  • 问题内容: 我想找到在其标签集中包含 所有 给定标签的项目。 以下是简化的类: 如果我这样尝试 我得到包含 任何 给定标签的项目。这不足为奇,但我希望包含 所有 给定标签的项目。所以我尝试另一种方式: 我收到错误消息。如果仅包含一个标签,它将起作用,但失败的原因不止于此。 如何在JPQL中表达呢? 问题答案: 诀窍是使用计数:

  • 我有一个像下面这样的data.table,它包含一组DNA字符串(列)和一系列突变(列中的字符)以及它们沿字符串(列)的相对位置。 因为对于n个突变,得到的字符串数是2^n,我想做的是生成一个通用函数,允许生成在