【发布时间】: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