Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在sql查询的in子句中传递字符串数组或列表_Java_Hibernate - Fatal编程技术网

Java 在sql查询的in子句中传递字符串数组或列表

Java 在sql查询的in子句中传递字符串数组或列表,java,hibernate,Java,Hibernate,我是Java新手,如果这是一个幼稚的问题,请原谅我。我有一个以逗号分隔的字符串,如下所示“str1,str2,str3”。我需要从数据库中查询与该字符串列表匹配的数据。我知道我可以将“str1、str2、str3”转换为数组。但也需要像这样在sql查询的in子句中传递 select * from Customer where name IN ('str1','str2','str3') 既然将“str1,str2,str3”转换为数组后,在子句中传递它是不合法的,我该如何实现这一点呢? hi

我是Java新手,如果这是一个幼稚的问题,请原谅我。我有一个以逗号分隔的字符串,如下所示
“str1,str2,str3”
。我需要从数据库中查询与该字符串列表匹配的数据。我知道我可以将
“str1、str2、str3”
转换为数组。但也需要像这样在sql查询的in子句中传递

 select * from Customer where name IN ('str1','str2','str3')
既然将
“str1,str2,str3”
转换为数组后,在子句中传递它是不合法的,我该如何实现这一点呢? hibernate中有没有任何实用方法可以帮助解决这个问题


提前感谢您

您可以尝试使用以下内容:

List customers=entityManager.createQuery(
“选择c”+
“来自客户c”+
“其中c.name在:name中”,Customer.class)
.setParameter(“名称”,数组.asList(“str1”,“str2”))
.getResultList();

另请参阅hibernate文档。

您使用什么进行查询?您只是将sql查询构建为字符串,然后将其作为本机查询发送到数据库吗?@ohgodspider我正在使用em.createQuery来构建查询,将字符串
str1、str2、str3
转换为一个列表,并在准备好的语句或hql中使用该列表。@aksapy但该问题在([str1,str2,str3])查询无效。除非我遗漏了什么,谢谢@SternK。这很有效!