博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于JPA中Specification接口的问题,记录一下
阅读量:3921 次
发布时间:2019-05-23

本文共 1214 字,大约阅读时间需要 4 分钟。

问题出现:在练习QueryDsl和JPA的整合时,需要定义一个类,实现Specification接口

public class QueryParams
implements Specification
{ @Override public Predicate toPredicate(Root
root, CriteriaQuery
query, CriteriaBuilder criteriaBuilder) { return null; }}

其实自己在刚学java基础的时候,应该有看过这个,但那时刚开始,就没注意,包括以后,在工作时,也几乎不需要注意这些东西(web接口),只是简单知道,实现一个接口,就要实现接口里的所有方法,其实是错的……

这里的Specification接口,源码如下

public interface Specification
extends Serializable { long serialVersionUID = 1L; static
Specification
not(Specification
spec) { return Specifications.negated(spec); } static
Specification
where(Specification
spec) { return Specifications.where(spec); } default Specification
and(Specification
other) { return Specifications.composed(this, other, AND); } default Specification
or(Specification
other) { return Specifications.composed(this, other, OR); } @Nullable Predicate toPredicate(Root
root, CriteriaQuery
query, CriteriaBuilder criteriaBuilder);}

两个静态方法,两个 Default修饰的 and & or 方法,是有方法体的,还有一个抽象接口 toPredicate 没有方法体,当New 出这个对象或者 实现这个接口的时候,是必须要实现这个接口的,,静态方法是不允许重写的,两个有方法体的方法可以选择性的重写 或实现(都是一个意思,至少作用一样)

转载地址:http://wfgrn.baihongyu.com/

你可能感兴趣的文章
结合控制台程序和K8S的CronJob完成定时任务
查看>>
WPF开发的实用小工具 - 快捷悬浮菜单
查看>>
.Net orm 开源项目 FreeSql 2.0.0
查看>>
IdentityServer4系列 | 简化模式
查看>>
小试YARP
查看>>
如何使用 C# 中的 HashSet
查看>>
api-hook,更轻量的接口测试工具
查看>>
一个情怀引发的生产事故(续)
查看>>
如何在 C# 中使用 RabbitMQ
查看>>
一套标准的ASP.NET Core容器化应用日志收集分析方案
查看>>
如何使用 C# 扩展方法
查看>>
C#如何回到主线程,如何在委托指定线程执行
查看>>
服务器重新部署踩坑记
查看>>
.NET应用程序安全操作概述
查看>>
C# WPF:把文件给我拖进来!!!
查看>>
生态和能力是国内自研操作系统发展的关键
查看>>
银河麒麟V10入选2020中国十大科技新闻
查看>>
Amazing 2020
查看>>
代码改变世界,也改变了我
查看>>
2021,未来可期
查看>>