我是 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")
Run Code Online (Sandbox Code Playgroud)
我想添加如下内容:
.withMatcher("projectAmountRaised", IsMoreThan(Long.parseLong()));
Run Code Online (Sandbox Code Playgroud)
我本来想拥有的,但它已被弃用:
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();
}
Run Code Online (Sandbox Code Playgroud)
因此,我正在寻找类似的东西......我可以使用 ExampleMatcher 从仅字符串标准创建一个广泛的结果列表,然后编写我自己的逻辑来删除不符合数字标准的对象,但我相信有一种更优雅的方法.
非常感谢您的帮助,也感谢您的放纵!
我正在使用 Angular 学习 Spring Boot,我正在尝试启动并运行我的第一个应用程序,阅读以下博客:
http://mydevgeek.com/angular-4-crud-application-with-spring-boot-rest-service-part-2/
https://dzone.com/articles/build-a-basic-crud-app-with-angular-50-and-spring
我设法在 8080 端口上使用 spring boot 使应用程序正常工作,并且它按预期工作。但是,当我尝试让它与 Angular 一起使用时,出现以下错误:
Angular is running in the development mode. Call enableProdMode() to enable the production mode.
core.js:3675
ERROR
{…}
error: error
bubbles: false
cancelBubble: false
cancelable: false
composed: false
currentTarget: null
defaultPrevented: false
eventPhase: 0
explicitOriginalTarget: XMLHttpRequest
__zone_symbol__errorfalse: null
__zone_symbol__loadfalse: null
__zone_symbol__xhrListener: function scheduleTask/target[XHR_LISTENER]()
__zone_symbol__xhrSync: false
__zone_symbol__xhrTask: Object { runCount: 0, _state: "notScheduled", type: "macroTask", … }
__zone_symbol__xhrURL: "//localhost:8080/cool-cars"
mozAnon: false
mozSystem: false
readyState: 4
response: "" …Run Code Online (Sandbox Code Playgroud) 我非常感兴趣地关注 Java 中的数字 covid 证书项目:https : //github.com/ehn-dcc-development/
更具体地说,对于 Java 和解码通行证:https : //github.com/GaetanoPiazzolla/greenpass-decode
使用此代码,解码我们从二维码中读取的 base45 字符串,我们有:
byte[] bytecompressed = Base45.getDecoder().decode(withoutPrefix);
Run Code Online (Sandbox Code Playgroud)
我想对这个相同的字符串进行编码,所以我正在尝试以下操作:
byte[] byteCompressedNew = Base45.getEncoder().encode(bytecompressed);
Run Code Online (Sandbox Code Playgroud)
但这会导致以下错误:
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException:在 nl.minvws.encoding.Base45$Encoder.encode(Base45.java:74) 处,长度为 45 的索引 -23 超出范围
在 base45 模块中的这行代码中:
result[resultIndex++] = toBase45[value % 45];
Run Code Online (Sandbox Code Playgroud)
如果你能帮助我理解我做错了什么,那就太好了。
非常感谢!