大家好,我正在使用springJPA,并且尝试基于非空的DTO字段值来过滤查询结果。
原因是每次我有不同的DTO字段时,我都应该只基于现有字段(换句话说,非空字段)获取帐簿。
我的DB表是books,并且我为它设置了以下DTO
public class BookDTO {
private String name;
private String title;
private String isbn;
private String author;
private int pages;
private String size;
}
我在网上搜索了一下,但是我没有找到一个解决这类问题的方法,无论如何都不能用SpringJPQL来实现
3条答案
按热度按时间w1jd8yoj1#
您可以使用Jpa规范执行器(scroll down to section 5)执行此操作
这样,您就可以通过编程方式定义要添加到where子句中的字段,如下所示。
yrdbyhpb2#
一个替代方案是使用SpringDataJPA规范。
您可以使用它为现有字段创建条件搜索。
参考:https://www.baeldung.com/rest-api-search-language-spring-data-specifications
ecbunoof3#
您可以尝试示例查询。
https://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch17.html#querycriteria-examples
示例查询类org. hib. criterion. example允许您从给定示例构造查询条件。
忽略版本属性、标识符和关联。默认情况下,排除空值属性。
您可以调整应用示例的方式。
您甚至可以使用示例将条件放置在关联对象上。