2017-08-10 4 views
1

私はSQLクエリの列挙型リストの入力方法を理解しようとしています。これは、次のようになります。Spring Data 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

試しましたか? –

関連する問題