2017-08-10 113 views
1

我一直在想弄清楚如何爲我的sql查詢輸入一列枚舉的枚舉。這是什麼樣子:Spring數據JPA中的@Query註釋可以包含枚舉列表嗎?

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

我明白了簡單的查詢,我們可以依靠JPA標準API,但我想知道如果我能真正做到這一點,而不是這樣。因爲如果可以的話,我可以創建更復雜的查詢(如與另一個表的聯接),如果我可以有指定列表的這種靈活性。

+1

試試吧,讓我們知道! :) – Adam

+0

'@ Query'不在「JPA」中。它在「Spring Data JPA」(!= JPA API)中。除此之外,你沒有別的東西在使用SQL,所以這個問題應該直接針對JDBC –

回答

0

是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工作。我在我的本地系統上測試過它,它似乎不適用於本機查詢。然而,JPQL在上面的答案中提到它工作正常。

可能是this答案會有幫助。

+0

你試過了嗎? –