这就是我想做的
我有一个实体
@Entity
public class JobEntity {
@Id
@GeneratedValue
private Long id;
@Enumerated(EnumType.STRING)
private Project project;
@Enumerated(EnumType.STRING)
private JobType jobType;
@Enumerated(EnumType.STRING)
private JobStatus jobStatus;
private Date createTime;
}
我知道我可以自定义存储库中的一个查询,但这只是一个固定的查询。我希望导出一些RESTful API,如下所示,
/search?project=""&jobType=""&jobStatue=""&createTime=""
这些参数不是强制性的,可以轻松地使用它们中的任何一个进行查询,例如
/search?createTime=""...
是否有一种优雅的方法来实现这一目标?
您可以使用Spring的规范API,它是JPA标准API的包装。确保您的存储库从JpaSpecificationExecutor<JobEntity>
规范示例为:
public class JobEntitySpecifications {
public static Specification<JobEntity> withProject(Project project) {
if (project == null) {
return null;
} else {
return (root, query, cb) -> cb.equal(root.get("project"), project);
}
}
public static Specification<JobEntity> withJobType() { ... }
public static Specification<JobEntity> withJobStatus() { ... }
public static Specification<JobEntity> withCreateTime() { ... }
}
确保null
在没有给出项目代码/职位类型/ …的情况下返回,以便在查询中将其忽略。
现在您可以使用:
repository.findAll(Specifications.where(JobEntitySpecifications.withJobType(jobType))
.and(JobEntitySpecifications.withJobStatus(jobStatus))
.and(JobEntitySpecifications.withProject(project))
.and(JobEntitySpecifications.withCreateTime(createTime)));
如果在此处使用静态导入,则可以使其看起来更好。
问题内容: 在数学课上,我们学习了如何定义新的运算符。例如: 这定义了法律。对于x和y的任何实数,x y是x + 2y。 范例:。 可以在JavaScript中定义这样的运算符吗?我知道函数可以胜任: 但我想使用以下语法: 代替这个: 哪个是最接近这个问题的解决方案? 问题答案: 最简洁的答案是不。ECMAScript(标准JS所基于的)不支持运算符重载。 可以使用sweet.js之类的第三方工具
问题内容: 例如,假设我想“提取” 为三个单独的变量,例如: 我该怎么做,而忽略了 “为什么要这么做呢?” 您可能会被问到这个问题。 之前已经多次问过类似的问题,但是从未给出真正的答案,因为OP真正需要的是使用不同的方法。很好,但这有可能吗? 我看过反射,似乎没有任何方法可以使我甚至向实例添加额外的字段,更不用说动态创建本地了。 问题答案: 是否可以在Java运行时创建变量? 简单回答是不。 Ja
问题内容: 我有一些需要经常打印的结构。现在,我正在围绕该结构使用经典的打印包装器: 此功能很方便,但实际上也很有限。如果不进行新包装,则无法添加或添加一些文本。我知道我可以使用 va_arg 系列添加或添加一些文本,但是我觉得我会重新实现。 我想知道是否有可能向printf编写自定义函数。我希望能够写这样的东西: 这可能吗 ?我怎样才能做到这一点 ? 注意:我在Ubuntu Linux 10.0
为下面的代码生成的字节代码在类中创建一个字段。当为可变字段赋值时,原始委托不会更改。 有没有一种方法可以在运行时更改委托,同时保持实现? 该示例取自https://kotlinlang.org/docs/reference/delegation.html文档并经过编辑。
我正在使用Spring Boot创建一个访问数据库的简单web应用程序。通过在中设置属性,我利用了DataSource的自动配置功能。这一切都很出色,而且非常快--伟大的工作伙计们@Spring! 我公司的政策是不应该有明文密码。因此,我需要对进行加密。经过一番深入研究,我决定创建一个实现,该实现创建一个jasypt,如下所示: 然后,我用文件将其打包到它自己的jar中,如下所示: 当在maven
我想用Ansible复制大文件。目标服务器有一个具有足够存储空间的专用分区。我注意到ansible使用由remote_tmp变量定义的临时目录。 谢谢你的回答。
我正在开发一个应用程序,该应用程序必须针对使用google protocol buffers 3.0.0版的目标进行交叉编译。有没有办法在protoc命令(或.proto文件)中指定生成的代码应该与protocol buffers版本3.0.0兼容,即使我用来生成代码的protoc是更高版本(如3.5.1)? 更新目标不是一个选项,我也不介意在我的开发环境中安装3.0.0,但如果说任何想要构建此代
问题内容: 有人知道是否可以在AWS ElasticSearch实例中为Kibana安装自定义插件吗? 谢谢! 问题答案: 听说过AWS支持不支持该功能(不支持在ES或Kibana中安装任何插件)。建议的解决方法是单独安装Kibana并指向ES服务端点。