是否有可能在jpql中实现类似于下面的mySQL?
select * from PERSON p where (p.name, p.country)
IN (('Bryan', 'Netherlands'), ('Candice', 'New Zealand'), ...);
其中“ ...”是列表的延续。我曾想创建一个新实体列表作为值的占位符,但是我不确定如何使它工作。我正在考虑以下方面的内容:
@Query(
value = "select p from Person p where (p.name, p.country) in :personList")
List<Person> findPersonsIn(@Param("personList") List<Person> personList);
我知道这是完全不正确的,但是我希望有人可以阐明如何在JPA或JDBC中实现上述MySQL语句。
是。使用AND运算符:
select * from PERSON p where ( p.name IN ('Bryan', 'Netherlands') ) AND ( p.country
IN ('Candice', 'New Zealand') ), ...);
JPA中未提供IN子句中的多个列
@Query(
value = "select p from Person p where (p.name, p.country) in :personList")
List<Person> findPersonsIn(@Param("personList") List<Person> personList);
您可以尝试以下代码吗?
@Query(
value = "select p from Person p where p.name in (:personName) or p.country in (:personCountry) ")
List<Person> findPersonsIn(@Param("personName") List<String> personName,@Param("personCountry") List<String> personCountry);
或者您可以使用“ querydsl”更轻松地编写查询]