使用 in 子句查找数据的 HQL 查询

HQL query to find the data using in clause

我正在尝试使用 in 子句 访问某些数据,但以下内容 异常

unexpected token: Customer near line 1, column 81 [from app.com.db.DTO.SmsSourceDTO as sms where sms.description in ( Registered Customer,External DB,Birthday)]

显示

SmsSourceDTO.java

   @Table(name = "sms_source_tbl")
    public class SmsSourceDTO implements Serializable {

        private Integer id;
        private String description;
   }

.

TestHql.java

       listOfSelectedDatabase  = {Registered Customer,External DB,Birthday};

      String hqlString = "from SmsSourceDTO as sms where sms.description in(" + listOfSelectedDatabase  +")";
        getResultSetByHQL(hqlString));

       protected List getResultSetByHQL(String hql) throws DataBaseException {
            Query query = null;

            query = getHbSession().createQuery(hql);
            session = null;
            return query.list();
       }

调试时我得到以下查询=> from SmsSourceDTO as sms where sms.description in ( Registered Customer,External DB,Birthday)

谁能帮忙。

您正在尝试将参数列表添加到 HQL 查询。我建议你使用 hibernate 参数绑定来做到这一点。

所以首先,如果您想包含一个字符串值列表,请在使用前创建它

List<String> listOfSelectedDatabase = Arrays.asList("Registered Customer", "External DB", "Birthday");

改为

listOfSelectedDatabase = {Registered Customer,External DB,Birthday};

然后在 HQL 查询中创建一个参数并提供其值如下:

String hqlString = "from SmsSourceDTO as sms where sms.description in (:paramList)";
Query query = session.createQuery(hqlString);
query.setParameterList("paramList", listOfSelectedDatabase);

最后,这个session = null;是干什么用的?我不明白这句话的意思。