如何使用JPA和Spring在列表中查找具有字段的不同行?
我正在使用Spring连接到数据库。我有一个扩展接口,CrudRepository<People,
Long>这是我想在数据库上执行的查询:SELECT DISTINCT name FROM people WHERE name NOT IN UserInputSet
。我更愿意在没有任何sql注释的情况下执行此操作,因此如果没有该注释就可以了NOT。
有办法吗?我看了一下Spring文档,但是什么也找不到(http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation)
这是我很累的事情,但是没有用。
@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)]
回答:
我终于能够找到一个没有@Query
注释的简单解决方案。
List<People> findDistinctByNameNotIn(List<String> names);
当然,我得到了people对象,而不仅仅是Strings。然后,我可以在java中进行更改。
以上是 如何使用JPA和Spring在列表中查找具有字段的不同行? 的全部内容, 来源链接: utcz.com/qa/407288.html