如何获取与ArrayList中的条目匹配的所有SQL条目?

时间:2014-08-07 18:09:06

标签: java sql spring hibernate

我有一个包含消息表的数据库,其中每个消息条目包含一个作者的变量。我还有一个包含作者列表的ArrayList。我想要做的是创建一个SQL查询,该查询从ArrayList中存在作者的数据库中检索所有条目。

这些内容如下:

List<Message> result = session.createQuery("from Message where author ISIN ARRAYLIST order by id DESC ").list();

任何人都知道我会这样做吗?

4 个答案:

答案 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中没有元素。因为它违反了查询。

请参阅此链接。

How to put more than 1000 values into an Oracle IN clause