Как запросить один столбец как одно значение результата с spring-data-jpa? - PullRequest
0 голосов
/ 28 сентября 2018

Класс сущности:

@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;

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Я не думаю, что то, что вы хотите, возможно с Spring Data JPA, используя только определения методов.Вам нужно использовать аннотацию @Query и написать свой запрос там, если вам нужно определенное поле, или получить всю сущность и получить код из нее с помощью метода получения, как сказал Jibin TJ.

0 голосов
/ 30 сентября 2018

Наконец-то я нашел рабочее решение, но оно не так идеально.

Определение:

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()
0 голосов
/ 28 сентября 2018

Вы можете использовать findFirstByCodeLike(String Code); Это приведет к извлечению всего класса сущности, и вы можете выбрать code из него.

...