返回资讯中心
外部精选
软件工程
#开发者实时流

Model Query 发布 0.11.1:一次声明 JPA DTO 投影,支持多方式查询

来源标题:Show HN: Model Query, declare a JPA DTO projection once, query it many ways

Model Query 发布 0.11.1 版本,提供基于 JPA 的类型化、投影优先查询能力。开发者只需通过 @QueryModel 注解声明一次 DTO 投影,即可用 select、where、orderBy、Limit 等多种方式组合查询。该版本所有公开类型均标注 @Incubating,1.0 冻结前可能在小版本中变动。

Hacker News 最新rey51372026/11/3 · 4 天前7 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

基于 JPA 的类型化、投影优先查询。 状态:0.11.1。在 1.0 冻结之前,每个公开类型都标注为 @Incubating,并可能在次要版本中发生变化 (API 稳定性)。用户指南位于 https://rey5137.github.io/model-query/(源码在 docs/site/docs/ 下);Javadoc 托管在 javadoc.io。 public record OrderView( OrderStatus status, BigDecimal total, Instant createdAt, // from、to(Optional<Instant>)和 country(Optional<String>)来自请求:空值不会添加任何谓词 List<OrderView> rows = executor.list( QOrderView.query() .select(QOrderView.DEFAULT.with(QOrderView.CUSTOMER)) .where(f -> f.eq(QOrderView.STATUS, Optional.of(OrderStatus.PAID)) .range(QOrderView.CREATED_AT, from, to) .eq(QOrderView.CUSTOMER_COUNTRY, country)) .orderBy(QOrderView.CUSTOMER_NAME.asc().nullsFirst(), QOrderView.CREATED_AT.desc()) .build(), Limit.of(100)); 用法 导入 BOM 并添加所需的模块: <properties> <model-query.version>0.11.1</model-query.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>io.github.rey5137</groupId> <artifactId>model-query-bom</artifactId> <version>${model-query.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>io.github.rey5137</groupId> <artifactId>model-query-jpa</artifactId> </dependency> <dependency> <groupId>io.github.rey5137</groupId> <artifactId>model-query-annotations</artifactId> </dependency> </dependencies> 在 maven-compiler-plugin 中注册处理器: <annotationProcessorPaths> <path> <groupId>io.github.rey5137</groupId> <artifactId>model-query-processor</artifactId> <version>${model-query.version}</version> </path> </annotationProcessorPaths> 在 Spring Boot 中,改为声明 model-query-spring-boot-starter,而不是上面这两个:它会引入 Spring Data JPA、 Hibernate 和 model-query-hibernate,因此只有在没有该 starter 的模块中才需要 model-query-annotations。 无论哪种方式,都要把处理器保留在 annotationProcessorPaths 中。 Java 17+、Jakarta Persistence 3.1+、Hibernate ORM 6.6+(已在 6.6 和 7.x 上测试)、starter 需要 Spring Boot 3.4+。 适用对象 适用场景 为什么选择 Model Query 与 JPA、Querydsl 和 Blaze-Persistence 的对比 快速开始 不使用 Spring、使用 Spring Boot 使用该库 模型、查询、过滤器、分页与导出、分组查询、批量写入、厂商、Spring、诊断 示例 纯 JPA(19 行的快速开始)、Spring Boot 贡献 CONTRIBUTING.md 和 docs/code-conventions.md 规范说明 docs/spec/SPEC.md 贡献 参见 CONTRIBUTING.md 以及项目的构建方式。请按照 SECURITY.md 中的说明私下报告 安全问题。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →