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

标签 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

如何实现?

最佳答案

查询方法的结果可以通过关键字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/

相关文章:

java - Spring MVC 支持的 Freemarker 中基于枚举的单选按钮

java - Grails 目标文件夹似乎不在应用程序的类路径上

java - fmt :message default value

java - 每个线程一个数据库连接?

mysql - MySql 和 Node.js 中的批处理

java - 带有 Freemarker 的 Spring Framework 错误 Controller

java - 在特定坐标处显示按钮

java - 为什么需要在 JLabel 中重置 setText() 以防止错误?

php - 在 Laravel 5.2 中同时连接到多个数据库

java - 将 java javax.inject.Provider 与 Spring @Scope(BeanDefinition.SCOPE_PROTOTYPE) 一起使用