【问题标题】:Spring Data JPA, error when I'm trying to select DistinctValueSpring Data JPA,当我尝试选择 DistinctValue 时出错
【发布时间】:2020-07-19 10:21:44
【问题描述】:

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

无法从类型 [java.util.ArrayList] 转换为类型 [@org.springframework.data.jpa.repository.Query java.util.List] 的值 '[a, b, C]';嵌套异常是 org.springframework.core.convert.ConverterNotFoundException:否 发现转换器能够从类型 [java.lang.String] 转换为 输入 [@org.springframework.data.jpa.repository.Query com.example.million.model.Record]

interface RecordRepository: CrudRepository<Record, Long>{

    @Query("SELECT DISTINCT million.parentDomain FROM Record million")
    fun findByDomain(domain: String): List<Record>
}

    @Service
class RecordService(val recordRepository: RecordRepository) {

    fun fetchByDomain(domain: String): List<Record> {

        val list = arrayListOf<Record>()

        println(recordRepository.findByDomain(domain))
        recordRepository.findByDomain(domain).forEach { list.add(it) }

        return list
    }
}

我有 db "million" 和里面的表记录(其中一个字段是 parent_domain) 更新:

@Entity
data class Record(
        @Id @GeneratedValue val id: Long? = null,
        var parentDomain: String = "",
        var domain: String = ""
)

【问题讨论】:

  • 你能分享域/实体类吗?
  • 你能提供给我们实体吗
  • 当然,在帖子中更新
  • 您正在返回 List 但在查询中您只获得 parentDomain。请创建适当的构造函数来匹配这个

标签: java spring jpa kotlin spring-data-jpa


【解决方案1】:

我认为您正在尝试进行投影,并且此视图无法映射到 Record 如果您只关心 parentDomain,请尝试进行此操作

interface RecordRepository: CrudRepository<Record, Long>{

    @Query("SELECT DISTINCT million.parentDomain FROM Record million")
    fun findByDomain(domain: String): List<String>
}

【讨论】:

  • 它将返回唯一父域的列表。我的目标是返回特定域的唯一父域。例如:domain:a 有 parentDomain:b x3 次。而且我不想看到它 3 次,我正在尝试找到解决方案,我的页面上只有一次 parentDomain @KhaledAhmed
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-08-25
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 2015-05-08
      • 2022-08-12
      • 2020-01-23
      • 2016-11-10
      相关资源
      最近更新 更多