Spring Data JPA,在我尝试选择DistinctValue时出现错误。

huangapple go评论106阅读模式
英文:

Spring Data JPA, error when I'm trying to select DistinctValue

问题

以下是翻译好的部分:

我在尝试使用 Spring Data JPA 从数据库中选择不同的值时遇到了这个错误。

无法从类型 [java.util.ArrayList] 转换为类型
[@org.springframework.data.jpa.repository.Query
java.util.List<com.example.million.model.Record>],对于值 '[a, b, c]' 的嵌套异常是
org.springframework.core.convert.ConverterNotFoundException: 找不到能够从类型 [java.lang.String] 转换为类型 [@org.springframework.data.jpa.repository.Query
com.example.million.model.Record] 的转换器。

  1. interface RecordRepository: CrudRepository<Record, Long>{
  2. @Query("SELECT DISTINCT million.parentDomain FROM Record million")
  3. fun findByDomain(domain: String): List<Record>
  4. }
  5. @Service
  6. class RecordService(val recordRepository: RecordRepository) {
  7. fun fetchByDomain(domain: String): List<Record> {
  8. val list = arrayListOf<Record>()
  9. println(recordRepository.findByDomain(domain))
  10. recordRepository.findByDomain(domain).forEach { list.add(it) }
  11. return list
  12. }
  13. }

我有一个名为 "million" 的数据库和其中的一个名为 "record" 的表(其中一个字段是 "parent_domain")。
更新:

  1. @Entity
  2. data class Record(
  3. @Id @GeneratedValue val id: Long? = null,
  4. var parentDomain: String = "",
  5. var domain: String = ""
  6. )
英文:

I'm getting this error while trying to select distinct value from database using Spring Data JPA.

> Failed to convert from type [java.util.ArrayList<?>] to type
> [@org.springframework.data.jpa.repository.Query
> java.util.List<com.example.million.model.Record>] for value '[a, b,
> c]'; nested exception is
> org.springframework.core.convert.ConverterNotFoundException: No
> converter found capable of converting from type [java.lang.String] to
> type [@org.springframework.data.jpa.repository.Query
> com.example.million.model.Record]

  1. interface RecordRepository: CrudRepository&lt;Record, Long&gt;{
  2. @Query(&quot;SELECT DISTINCT million.parentDomain FROM Record million&quot;)
  3. fun findByDomain(domain: String): List&lt;Record&gt;
  4. }
  5. @Service
  6. class RecordService(val recordRepository: RecordRepository) {
  7. fun fetchByDomain(domain: String): List&lt;Record&gt; {
  8. val list = arrayListOf&lt;Record&gt;()
  9. println(recordRepository.findByDomain(domain))
  10. recordRepository.findByDomain(domain).forEach { list.add(it) }
  11. return list
  12. }
  13. }

I have db "million" and table record inside (and one of the field is parent_domain)
Update:

  1. @Entity
  2. data class Record(
  3. @Id @GeneratedValue val id: Long? = null,
  4. var parentDomain: String = &quot;&quot;,
  5. var domain: String = &quot;&quot;
  6. )

答案1

得分: 1

我认为你正在尝试进行投影,而这个视图无法映射到 Record,如果你只关心 parentDomain,请尝试进行如下操作:

  1. interface RecordRepository: CrudRepository<Record, Long>{
  2. @Query("SELECT DISTINCT million.parentDomain FROM Record million")
  3. fun findByDomain(domain: String): List<String>;
  4. }
英文:

I think you are trying to make a projection and this view can not be mapped to a Record try to to make this if you care about the parentDomain only

  1. interface RecordRepository: CrudRepository&lt;Record, Long&gt;{
  2. @Query(&quot;SELECT DISTINCT million.parentDomain FROM Record million&quot;)
  3. fun findByDomain(domain: String): List&lt;String&gt;
  4. }

答案2

得分: 0

为了获取唯一的 parentDomain,您应该使用以下查询:

  1. @Query("SELECT DISTINCT million.parentDomain FROM Record million where million.domain = :domain")
  2. fun findByDomain(@Param("domain") domain: String): List<String>
英文:

In order to get unique parentDomain you should use following query:

  1. @Query(&quot;SELECT DISTINCT million.parentDomain FROM Record million where milion.domain = :domain&quot;)
  2. fun findByDomain(@Param(&quot;domain&quot;) domain: String): List&lt;String&gt;

答案3

得分: 0

将“List Record”替换为接口RecordRepository中的List。

英文:

Replace "List Record " with List in interface RecordRepository

huangapple
  • 本文由 发表于 2020年4月7日 17:05:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/61076411.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定