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

时间:2016-01-12 10:58:34

标签: java database spring jpa spring-data-jpa

我有一个 实体

@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 低和高时获取数据?

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

enter image description here

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

1 | 0 | 100 | 30

如何实现这一目标?

2 个答案:

答案 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