如何在spring数据之间编写自定义JPA查询?

How to write custom between spring data JPA query?

我有一个 实体

@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不是实体class的成员变量。

我想在 intValue 下降到 BETWEEN low 和 high 时获取数据?

例如我有如图所示的数据库条目:

如果我的 intValue 是 50 我应该得到第一行,即

1 | 0 | 100 | 30

如何实现?

您可以使用JPA Native 查询。 (有可用答案about native query and maping

您可以使用本机查询 like this

查询方式的结果可以通过关键字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);
}

实施class:

List<PromoAmtRange> result = jpaRepository.findByThreshold(intValue, new PageRequest(0,10));