如何使用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

回到顶部