我知道我可以这样写:
Query query = session.createSQLQuery(
"select s.stock_code from stock s where s.stock_code = :stockCode")
.setParameter("stockCode", "7277");
List result = query.list();
如果我使用列表值,我该怎么做
select count(*) from skill where skill.id in (1,2,4)
我想要替换硬编码值。
答案 0 :(得分:1)
也许:
Query query = session.createSQLQuery("select count(*) from skill where skill.id in :ids")
.setParameter("ids", Arrays.asList(1,2,4));
答案 1 :(得分:0)
你尝试过这样的事吗?
Query query = session.createSQLQuery(
"select s.stock_code from stock s where s.stock_code in (:stockCodes)")
.setParameter("stockCodes", "1,2,4");
它对你有用吗?
答案 2 :(得分:0)
查询界面有setParameterList(List<any>)
函数来设置HQL中IN
子句中的值。但是在HQL IN
中,Clause有一个限制来设置元素。如果超出限制,则会发生内存溢出异常。