6

我是 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 从仅字符串标准创建一个广泛的结果列表,然后编写我自己的逻辑来删除不符合数字标准的对象,但我相信有一个更优雅的方法.

非常感谢您的帮助,以及您的放纵!

4

0 回答 0