Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用QueryDSL绑定进行Spring数据REST范围检查_Java_Spring_Spring Data_Spring Data Jpa_Spring Data Rest - Fatal编程技术网

Java 使用QueryDSL绑定进行Spring数据REST范围检查

Java 使用QueryDSL绑定进行Spring数据REST范围检查,java,spring,spring-data,spring-data-jpa,spring-data-rest,Java,Spring,Spring Data,Spring Data Jpa,Spring Data Rest,我有这样的要求: 我的域实体仅由id组成: @Entity @Data public class ServiceNumberPorting { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(updatable = false, nullable = false) private Long id; } 还有我的rest控制器和谓词 @GetMapping(value = "/servic

我有这样的要求:

我的域实体仅由id组成:

@Entity
@Data
public class ServiceNumberPorting {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(updatable = false, nullable = false)
    private Long id;
}
还有我的rest控制器和谓词

@GetMapping(value = "/services/querywithdsl")
    public ResponseEntity<List<ServiceNumberPortingMapper>>getServiceNumberPortingWithDsl(@QuerydslPredicate(root = ServiceNumberPorting.class) Predicate predicate) {
        ...

    }
如何做到这一点

以下是我看过的文件:
我能想到的解决方案之一是:

在您的存储库中,我定义了一个方法
getValueLyingBetween
,并编写了一个简单的查询:

public interface ServiceNumberPortingRepository extends JpaRepository...{
    @Query("SELECT m FROM <YOUR_TABLE_NAME> m where ( m.id >=:min and m.id <= :max )")
    public ServiceNumberPorting getValueLyingBetween(@Param("min") String min, @Param("max") String max);

}
公共接口服务NumberPortingRepository扩展了JpaRepository{

@查询(“从m中选择m,其中(m.id>=:min和m.id是一种方法(请参见“过滤器之间”)。您正在使用profile.heightMeters,它可能存在于profile实体中。但我的实体中不存在min和max属性。我如何将它们与id进行比较?但是您有属性
id
-当您实施此方法时,您将获得
id
的“介于”30和90之间的过滤器,如下所示:
/services/?id=30&id=90
@sarah did我的解决方案对你有用吗?我最终使用一些dto对象将请求字段映射到对象,并使用pageable repository自己创建dsl查询。老实说,这不是我想要的。但我感谢你们提供的解决方案和你们的时间,从这些答案中学到了新的方法。
..where id>min and id< max
bindings.bind(store.city).single((path, value) -> path.endsWith(value));
public interface ServiceNumberPortingRepository extends JpaRepository...{
    @Query("SELECT m FROM <YOUR_TABLE_NAME> m where ( m.id >=:min and m.id <= :max )")
    public ServiceNumberPorting getValueLyingBetween(@Param("min") String min, @Param("max") String max);

}