【问题标题】:How to query single column as single result value with spring-data-jpa?如何使用 spring-data-jpa 将单个列查询为单个结果值?
【发布时间】:2019-03-04 03:07:22
【问题描述】:

实体类:

@Entity
class MyEntity {
  var id: Int?
  var code: String
  ...
}

预期方法:(失败)

interface MyEntityJpaRepository : JpaRepository<MyEntity, Int> {
  fun getFirstCodeByCodeStartingWithOrderByCodeDesc(codePrefix: String) : String
}

想要的结果:

select code from MyEntity where code like '20180101_%' order by code desc limit 1;

【问题讨论】:

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


    【解决方案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()
    

    【讨论】:

      【解决方案2】:

      你可以使用 findFirstByCodeLike(String Code); 这将获取整个实体类,您可以从中选择code

      【讨论】:

      【解决方案3】:

      我认为 Spring Data JPA 仅使用方法定义不可能实现您想要的。如果您需要特定字段,则需要使用 @Query 注释并在其中编写查询,或者获取整个实体并使用 Jibin TJ 所说的 getter 从中获取代码。

      【讨论】:

        猜你喜欢
        • 2014-04-23
        • 1970-01-01
        • 2018-05-08
        • 2018-06-04
        • 2019-03-15
        • 2014-12-02
        • 2017-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多