我是 Java 和 Spring 的新手,我正在使用 Spring JPA 构建一个系统。我现在正在处理我的服务和控制器类,我想创建一个动态查询。我创建了一个表单,用户可以在其中输入字段中的值,或者将它们留空。然后我使用示例匹配器创建一个基于非空字段的示例,并在数据库中查询与对象的非空字段匹配的对象。
它适用于字符串,它适用于数字,以防用户输入的数字与数据库中的数字匹配。我想问社区的是:我们如何使用 Spring ExampleMatcher 添加逻辑,以便与数字相关的查询不是 Select * from Projects where project.return = 10 而是例如 Select * from Projects where project.return >=10?
这是一个非常基本的问题,但我在网上到处找,我找不到答案。我发现的所有消息来源都说 ExampleMatcher 只处理字符串,但我觉得奇怪的是,如此强大的系统没有处理高于/低于数字类型标准的逻辑。
我的示例匹配器代码:
ExampleMatcher matcher = ExampleMatcher.matching()
.withIgnoreNullValues()
.withIgnoreCase()
.withIgnorePaths("projectId", "businessPlans", "projectReturn", "projectAddress.addressId")
我想添加如下内容:
.withMatcher("projectAmountRaised", IsMoreThan(Long.parseLong()));
我本来希望拥有的,但它已被弃用:
public static List getStockDailyRecordCriteria(Date startDate,Date endDate,
Long volume,Session session){
Criteria criteria = session.createCriteria(StockDailyRecord.class);
if(startDate!=null){
criteria.add(Expression.ge("date",startDate));
}
if(endDate!=null){
criteria.add(Expression.le("date",endDate));
}
if(volume!=null){
criteria.add(Expression.ge("volume",volume));
}
criteria.addOrder(Order.asc("date"));
return criteria.list();
}
因此,我正在寻找类似的东西......我可以使用 ExampleMatcher 从仅字符串标准创建一个广泛的结果列表,然后编写我自己的逻辑来删除不符合数字标准的对象,但我相信有一个更优雅的方法.
非常感谢您的帮助,以及您的放纵!