使用 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;
是干什么用的?我不明白这句话的意思。
我正在尝试使用 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;
是干什么用的?我不明白这句话的意思。