Spring Data JPA, ошибка при попытке выбрать DistinctValue - PullRequest
1 голос
/ 07 апреля 2020

Я получаю эту ошибку при попытке выбрать отдельное значение из базы данных с помощью 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
    }
}

У меня есть дБ "миллион" и запись таблицы внутри (и одним из полей является parent_domain) Обновление:

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

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Я думаю, что вы пытаетесь создать проекцию, и это представление не может быть сопоставлено с Record попыткой сделать это, если вы заботитесь только о parentDomain

interface RecordRepository: CrudRepository<Record, Long>{

    @Query("SELECT DISTINCT million.parentDomain FROM Record million")
    fun findByDomain(domain: String): List<String>
}
0 голосов
/ 08 апреля 2020

Чтобы получить уникальный родительский домен, вы должны использовать следующий запрос:

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