【问题标题】:How to create a Spring Specification object?如何创建一个 Spring Specification 对象?
【发布时间】:2021-09-28 08:51:50
【问题描述】:

使用tkaczmarzyk arg-resolver library see here 与我的 Spring Boot/Hibernate 项目 我想搜索我的数据库。


实体:
public class Animal { 
    private String color;
    private String name;
    ... 
}

存储库类:

public inteface AnimalRepository extends JpaRepository<Animal, Long>, JpaSpecificationExecutor<Animal> {
}

我创建了一个扩展 Specification 的新接口:


@And({
@Spec(params = "color", spec = Equal.class),
@Spec(params = "name", spec = Equal.class)
})

public interface AnimalSearch extends Specification<Animal> {
}

现在我想用某种方法做这样的事情:

public void myMethod() {

    AnimalSearch search; /* here is my question. How can I create some kind of object with 2 parameters: color and name for the interface?*/

    Collection<Animal> animalsFiltered = animalRepository.findAll(search);

    // etc
}

我是否需要创建一个像这样的类:

public class AnimalSearchObject implements AnimalSearch {
private String color;
private String name;
...
}

并且拥有:

AnimalSearchObject search = new AnimalSearchObject("my_color", "my_name");
Collection<Animal> animalsFiltered = animalRepository.findAll(search);

或者有没有更简单的方法?

【问题讨论】:

  • 你试过Spring boot本身的规范了吗?您可以在没有额外库的情况下使用它们。
  • 这是我们在这个项目中使用的标准库。我也应该在这里使用它

标签: spring spring-boot spring-data-jpa specifications


【解决方案1】:

不能这样做。tkaczmarzyk arg-resolver library 有助于仅映射请求中收到的参数。我问的不能用这个库来完成

【讨论】:

    猜你喜欢
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    相关资源
    最近更新 更多