繁体   English   中英

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

[英]Can @Query annotation in Spring Data JPA take in a list of enums?

我一直在尝试找出如何为我的sql查询输入枚举列表。 看起来是这样的:

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

我知道对于简单的查询,我们可以依赖JPA Criteria API,但我想知道是否可以用这种方法来代替。 因为这样,如果我可以灵活地指定列表,则可以创建更复杂的查询(例如与另一个表的联接)。

是的spring-data-jpa的@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 ,这是nativeQuery=true 我在本地系统上对其进行了测试,它似乎不适用于本机查询。 但是,使用JPQL可以如上述答案中所述正常工作。

可能这个答案会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM