我一直在试图弄清楚如何为我的sql查询输入一个枚举列表。这就是它的样子:
@Query(value = "Select * from employees where city in :cities", nativeQuery = true)
List<Employee> findByCities(@Param("cities") List<City> cities);
我理解,对于简单查询,我们可以依赖JPA Criteria API,但我想知道我是否可以这样做。因为如果是这样,我可以创建更复杂的查询(例如与另一个表的连接),如果我可以具有指定列表的这种灵活性。
答案 0 :(得分:3)
是的spring-data-jpa&#39; @Query
可以列出enums
。
这是我的存储库方法
@Query("Select u from User u where u.userType in :types")
List<User> findByType(@Param("types") List<UserType> types);
这是我的存储库调用
userRepository.findByType(Arrays.asList(AppConstant.UserType.PRINCIPLE)))
这是查询日志
SELECT user0_.id AS id1_12_,
user0_.date_created AS date_created2_12_,
...
...
FROM users user0_
WHERE user0_.user_type IN ( ? )
希望这有帮助。
PS:我在本地计算机上对此进行了测试,结果为正。
更新1
同样不适用于nativeQuery=true
。我在我的本地系统上进行了测试,它似乎没有使用本机查询。但是使用JPQL它可以正常工作,如上面的答案所述。
可能this答案会有所帮助。