使用 @Query 休眠 jpa 投影

Tin*_* Ng 4 hibernate spring-data-jpa kotlin hibernate-query

我见过的大多数示例都使用 entityManager.createQuery 或 .createNativeQuery 等。

有没有办法让类似以下的工作?

data class SummaryDto(val employeeName: String, val employerName: String)

@Query("select e.name as employeeName, emp.name as employerName " +
            "from Employer e " +
            "inner join Employee emp on emp.employer_id = e.id ", nativeQuery = true)
    fun findSummaries(): List<SummaryDto>
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时

我收到此错误找不到能够从类型转换的转换器 [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [dto.SummaryDto]

这可以用 Kotlin 来完成,还是有另一种方法可以让它与基于 Hibernate JPA Annotation 的一起工作?

谢谢锡

Tin*_* Ng 6

对于任何可能遇到同样问题的人。改成SummaryDto这样的界面

interface SummaryDto { val employeeName: String val employerName: String }

将工作。