@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
如何实现这一目标?
答案 0 :(得分:3)
查询方法的结果可以通过关键字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));
答案 1 :(得分:0)
您可以使用JPA Native查询。 (有可用的答案about native query and maping)
您可以使用原生查询like this