我有一个包含消息表的数据库,其中每个消息条目包含一个作者的变量。我还有一个包含作者列表的ArrayList。我想要做的是创建一个SQL查询,该查询从ArrayList中存在作者的数据库中检索所有条目。
这些内容如下:
List<Message> result = session.createQuery("from Message where author ISIN ARRAYLIST order by id DESC ").list();
任何人都知道我会这样做吗?
答案 0 :(得分:4)
您可以将作者列表设置为命名参数:
String cmd = "from Message where author IN (:authorlist) order by id DESC";
Query q = session.createQuery(cmd);
q.setParameterList("authorlist", yourAuthorList);
List<Message> result = q.list();
答案 1 :(得分:1)
ArrayList<String> authors=(ArrayList<String>)"<your list>";
String in="(";
for(String author:authors){
in +=author+",";
}
in=in.substring(0,in.length()-1);
in +=")";
List<Message> result = session.createQuery("from Message where author IS IN "+in+" order by id DESC ").list();
答案 2 :(得分:1)
你可以这样(同样的,不同的方式):
String hql= "SELECT * FROM Message WHERE author IN ( :authors)";
Query query = session.createQuery(hql);
query.setParameterList("authors", <your authors list>);
答案 3 :(得分:0)
String cmd = "from Message where author IN (:authorlist) order by id DESC";
Query q = session.createQuery(cmd);
q.setParameterList("authorlist", yourAuthorList);
q.setParameterList("authorlist", yourAuthorList);
List<Message> result = q.list();
您可以尝试这样做但在此之前您应该知道ArrayList中没有元素。因为它违反了查询。
请参阅此链接。