Kotlin 如何使用spring数据jpa查询单个列作为单个结果值?

Kotlin 如何使用spring数据jpa查询单个列作为单个结果值?,kotlin,spring-data-jpa,spring-data,Kotlin,Spring Data Jpa,Spring Data,实体类: @Entity class MyEntity { var id: Int? var code: String ... } 预期方法:(失败) 你可以用 findFirstByCodeLike(字符串代码) 这将获取整个实体类,您可以从中选择code。我认为您不可能只使用方法定义来获取Spring数据JPA。如果你需要一个特定的字段,你需要使用@Query注释并将你的查询写入其中,或者像Jibin TJ所说的那样使用getter获取整个实体并从中获取代码。最后,我找到了一个

实体类:

@Entity
class MyEntity {
  var id: Int?
  var code: String
  ...
}
预期方法:(失败)

你可以用
findFirstByCodeLike(字符串代码)

这将获取整个实体类,您可以从中选择
code

我认为您不可能只使用方法定义来获取Spring数据JPA。如果你需要一个特定的字段,你需要使用
@Query
注释并将你的查询写入其中,或者像Jibin TJ所说的那样使用getter获取整个实体并从中获取代码。

最后,我找到了一个可行的解决方案,但它并不完美

定义:

interface MyEntityJpaRepository : JpaRepository<MyEntity, Int> {
  @Query("select code from MyEntity where code like ?1% order by code desc")
  fun getMaxCode(codePrefix: String, pageable: Pageable = PageRequest.of(0, 1)): List<String>
}

如果您有实体类,那么可以使用getters
getCode()
来获取
code
我没有整个实体实例,只想查询代码。
select code from MyEntity where code like '20180101_%' order by code desc limit 1;
interface MyEntityJpaRepository : JpaRepository<MyEntity, Int> {
  @Query("select code from MyEntity where code like ?1% order by code desc")
  fun getMaxCode(codePrefix: String, pageable: Pageable = PageRequest.of(0, 1)): List<String>
}
val code = repository.getMaxCode(codePrefix = "20180101_").firstOrNull()