我有一个 实体
@Entity
public class PromoAmtRange implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "low")
private Integer low;
@Column(name = "high")
private Integer high;
@Column(name = "threshold")
private Integer threshold;
//
constructor & getters setters
}
及其 存储库
public interface PromoAmtRangeRepository extends JpaRepository<PromoAmtRange,Long> {
@Query("SELECT pa FROM PromoAmtRange pa WHERE :intValue BETWEEN pa.low AND pa.high")
PromoAmtRange findByThreshold(@Param("intValue") Integer intValue);
}
注意:如您所见,intValue 不是实体类的成员变量。
我想在 intValue 下降到 BETWEEN 低点和高点时获取数据?
例如我有如图所示的数据库条目:
如果我的 intValue 是 50 我应该得到第一行即
1 | 0 | 100 | 30
如何实现?
最佳答案
查询方法的结果可以通过关键字first或top来限定,两者可以交替使用。可以将可选数值附加到 top/first 以指定要返回的最大结果大小。
尝试:
public interface PromoAmtRangeRepository extends JpaRepository<PromoAmtRange,Long> {
@Query("SELECT pa FROM PromoAmtRange pa WHERE :intValue BETWEEN pa.low AND pa.high")
List<PromoAmtRange> findByThreshold(@Param("intValue") Integer intValue,Pageable pageable);
}
实现类:
List<PromoAmtRange> result = jpaRepository.findByThreshold(intValue, new PageRequest(0,10));
关于java - 如何在 spring 数据 JPA 查询之间编写自定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34741824/