JPA と Spring を使用してリスト内のフィールドで個別の行を検索するにはどうすればよいでしょうか? 質問する

JPA と Spring を使用してリスト内のフィールドで個別の行を検索するにはどうすればよいでしょうか? 質問する

私は Spring を使用してデータベースに接続しています。 を拡張するインターフェイスがあります。CrudRepository<People, Long>データベースで実行したいクエリは次のとおりですSELECT DISTINCT name FROM people WHERE name NOT IN UserInputSet。SQL アノテーションなしで実行したいので、 なしで可能であればNOT問題ありません。

それを実行する方法はありますか?春のドキュメントを見ましたが、何も見つかりません(クエリメソッドは、クエリの作成と実行に使用されます。


これは私が試したのですが、機能しません。

@Query("SELECT DISTINCT name FROM people WHERE name NOT IN (?1)")
List<String> findNonReferencedNames(List<String> names);

これは私が受け取った例外です:

Error creating bean with name 'peopleRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List de.test.tasks.persistence.PeopleRepository.findNonReferencedNames(java.util.List)!

そして

Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: people is not mapped [SELECT name FROM people WHERE name NOT IN (?1)]

ベストアンサー1

ついに注釈なしの簡単な解決策を見つけることができました@Query

List<People> findDistinctByNameNotIn(List<String> names);

もちろん、文字列だけではなく、people オブジェクトも取得しました。その後、Java で変更を行うことができます。

おすすめ記事