【发布时间】:2015-11-11 18:48:56
【问题描述】:
我正在使用 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)]
【问题讨论】:
-
“它不工作”。再清楚不过了……除了发生了什么、什么错误、什么日志、什么实体等
-
我会用我遇到的错误更新问题。
-
你不应该“冒号”
1位吗? -
什么是实体“人”?应该有一个大写的“P”?
-
这是一个原生查询。您应该将
nativeQuery = true作为参数添加到@Query
标签: java spring hibernate jpa java-8