我想使用我的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))。
如何使用休眠模式实现这一目标?
答案 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();
}