JPA 分页及 LambdaQuery 查询方法实现
Preface {#preface} ------------------ 前一阵子使用了一段时间的 Mybatis Plus 操作数据库查询数据,觉得 `LambdaQuery()` 方法甚是好用,由此产生了在 Hibernate 中实现此功能;况且老早之前就想着在 Hibernate 中实现分页查询的功能,索性这次两个功能一起完成。 > Hibernate 和 JP...
Preface {#preface} ------------------ 前一阵子使用了一段时间的 Mybatis Plus 操作数据库查询数据,觉得 `LambdaQuery()` 方法甚是好用,由此产生了在 Hibernate 中实现此功能;况且老早之前就想着在 Hibernate 中实现分页查询的功能,索性这次两个功能一起完成。 > Hibernate 和 JP...
1、概览 {#1概览} ----------- 本文将带你了解 JPA 是如何托管实体的,以及 Persistence Context(持久化上下文)由于外部变化而无法返回最新数据的情况。 2、Persistence Context {#2persistence-context} --------------------------------------------- ...
1、简介 {#1简介} ----------- **Java Persistence API** (JPA)是一种广泛使用的规范,用于访问、持久化和管理 Java 对象与关系数据库之间的数据。JPA 应用中的一项常见任务是计算符合特定条件的实体数量。使用 JPA 提供的 `CriteriaQuery` API 可以高效地完成这项任务。 `CriteriaQuery` 的核心...
1、简介 {#1简介} ----------- 本文将带你了解在使用 JPA 与 PostgreSQL 交互时出现异常 "*PSQLException error: column is of type json but the expression is of type character varying*" 的原因,以及解决办法。 2、常见的原因 {#...
1、简介 {#1简介} ----------- 本文将带你了解使用 Hibernate 时出现 "*could not determine recommended JdbcType for class*" 异常的原因,以及解决办法。 2、常见原因 {#2常见原因} --------------- 出现该异常,通常是因为 JPA(Java Persist...
1、简介 {#1简介} ----------- 在 JPA 中,*CAST* 和 *TREAT* 是两个不同的关键字,用于操作数据类型和实体关系。本文将带你了解 *CAST* 和 *TREAT* 的区别,并通过示例来说明它们的用法。 2、JPA 中的 CAST {#2jpa-中的-cast} ----------------------------- JPA 中的 CAS...
1、概览 {#1概览} ----------- 在本教程中,我们将学习在 JPA 中,为什么实体类必须要有默认无参数构造函数? 为了理解无参数构造函数的意义,我们将使用一个简单的 `Employee` 实体示例。我们将观察缺少默认构造函数是如何导致编译时错误的。我们将深入探讨 JPA 在实体实例化中对 `Reflection` 的使用。此外,我们还将简要介绍这些类中可能需要...
Java 16 中引入的 Java Record 允许轻松地定义数据类(Data Class),这非常适合用于 JPA 中的投影查询。 Record 不能作为实体类 {#record-不能作为实体类} -------------------------------- Record 只能用于投影查询。像 Hibernate 等流行的 JPA 实现创建代理对象时需要无参构造函数...
1、概览 {#1概览} ----------- [Spring JPA](/spring-data-jpa/) 和 *Hibernate* 为不同据库通信提供了强大的工具。然而,随着开发者将更多的控制权(包括查询生成)委托给框架,结果可能与我们的预期相去甚远。 开发者通常会对在多对多关系中使用列表(`List`)还是集合(`Set`)产生困惑。而且,Hibernate 对其...
1、概览 {#1概览} ----------- Querydsl 和 JPA Criteria 是在 Java 中构建类型安全查询的流行框架。它们都提供了以静态类型表达查询的方法,使编写与数据库交互的高效、可维护代码变得更容易。本文将从多个角度对它们进行比较。 2、设置 {#2设置} ----------- 首先,设置依赖。在所有示例中,都使用 [*HyperSQL*](...