Hibernate CrudRepository-选择第一行

时间:2018-08-01 20:35:52

标签: hibernate spring-mvc spring-boot spring-data-jpa

我想使用我的Repository类从表中仅获取第一行。 目前我停留在这一点:

import com.bodymate.springend.mvc.hiberentity.Trainer;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;

public interface TrainerRepository extends CrudRepository<Trainer, Integer> {

    @Query("SELECT * FROM trainer LIMIT 1")
    public Trainer getFirst();
}

编译器不接受关键字“ LIMIT” ...

我也不能使用诸如findFirstBy ...或getgetFirstBy ...之类的方法,因为所有人都希望选择标准。而且我认为通过选择标准对所有行都是正确的不是最好的解决方案(类似于findFirstByIdLessThan(99999))。

如何使用休眠模式实现这一目标?

1 个答案:

答案 0 :(得分:0)

使用Pageable参数创建一个辅助方法,并将其用于指定为默认实现的方法中(或在服务/自定义存储库中单独使用):

@Query("SELECT t FROM trainer t")
List<Trainer> getLimited(Pageable page);

default Optional<Trainer> getFirst() {
  return getLimited(PageRequest.of(0,1))
           .stream()
           .findFirst();
}