Spring Data JPA中的@Query注释可以列入枚举列表吗?

时间:2017-08-10 20:38:02

标签: java sql spring hibernate spring-data-jpa

我一直在试图弄清楚如何为我的sql查询输入一个枚举列表。这就是它的样子:

@Query(value = "Select * from employees where city in :cities", nativeQuery = true)
List<Employee> findByCities(@Param("cities") List<City> cities);

我理解,对于简单查询,我们可以依赖JPA Criteria API,但我想知道我是否可以这样做。因为如果是这样,我可以创建更复杂的查询(例如与另一个表的连接),如果我可以具有指定列表的这种灵活性。

1 个答案:

答案 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答案会有所帮助。