Pau*_*nel 27 java spring hibernate jpa java-8
我使用Spring连接到数据库.我有一个扩展接口CrudRepository<People, Long>这是我想在db上执行的查询:SELECT DISTINCT name FROM people WHERE name NOT IN UserInputSet.我更愿意在没有任何sql注释的情况下完成它,所以如果没有那么好就可以NOT.
有办法吗?我查看了春季文档,但我找不到任何内容(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);
Run Code Online (Sandbox Code Playgroud)
这是我得到的例外:
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)!
Run Code Online (Sandbox Code Playgroud)
和
Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: people is not mapped [SELECT name FROM people WHERE name NOT IN (?1)]
Run Code Online (Sandbox Code Playgroud)
Pau*_*nel 52
我终于能够找到一个没有@Query注释的简单解决方案.
List<People> findDistinctByNameNotIn(List<String> names);
Run Code Online (Sandbox Code Playgroud)
当然,我得到的是人物而不是弦乐.然后我可以在java中进行更改.
pio*_*oto 13
您是否尝试过重写这样的查询?
@Query("SELECT DISTINCT p.name FROM People p WHERE p.name NOT IN ?1")
List<String> findNonReferencedNames(List<String> names);
Run Code Online (Sandbox Code Playgroud)
注意,我假设你的实体类是命名的People,而不是people.
avi*_*zvi 10
@Query("SELECT DISTINCT name FROM people WHERE name NOT IN (:names)")
List<String> findNonReferencedNames(@Param("names") List<String> names);
Run Code Online (Sandbox Code Playgroud)
小智 9
@Query("SELECT distinct new com.model.referential.Asset(firefCode,firefDescription) FROM AssetClass ")
List<AssetClass> findDistinctAsset();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74975 次 |
| 最近记录: |