【问题标题】:Query multiple Entity attributes with List of values使用值列表查询多个实体属性
【发布时间】:2015-01-22 22:23:12
【问题描述】:

我有一个字符串列表,其中包含实体中多个属性的搜索项。我想查询数据库并检索在任何一个指定属性中具有这些字符串之一的任何实体。例如,假设我有一个部分名称列表:

//contents of the list (for visual purposes)
["Mi", "Chr", "Leo", "Jo", "Par"]

另外,让我们假设我们不知道列表的大小。现在,假设我有一个具有以下属性的实体:

String firstName;
String lastName;

如何检索(最好在一个查询中)其名字或姓氏包含列表中任何字符串的所有实体?

类似(伪代码):

SELECT u FROM User u WHERE u.firstName LIKE (%Mi% OR %Chr% OR %Leo% OR %Jo% OR %Par%) 
    OR u.lastName LIKE (%Mi% OR %Chr% OR %Leo% OR %Jo% OR %Par%)

如果有类似 LIKE IN 子句的东西会是完美的,但不幸的是,我不相信 JPQL 支持它。那么,如何做到这一点呢?

【问题讨论】:

    标签: java jakarta-ee jpa jpql


    【解决方案1】:

    此代码使用IN 条件构建查询。

    String query = "";
    String whereClause = "";
    
    for(int i = 0; i < LIST.size(); i++) {
        // using * wildcard
        whereClause += "\"*" + LIST.get(i).toString() + "*\",";
    }
    
    query = String.format("SELECT User.firstName, User.lastName FROM User WHERE User.firstName IN (%s) OR User.lastName IN (%s);", whereClause, whereClause);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 2017-06-30
      • 2015-02-18
      相关资源
      最近更新 更多