问题标签 [jpa-criteria]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
315 浏览

java - 为什么我的criteriaQuery.select方法在spring data jpa中是错误的

我正在使用规范编写弹簧数据 jpa。但是IDEA给了我一个错误(红线):

这是我的代码。请帮我!

Root 是 Selection 的子类。为什么我的代码是错误的?

我真的很受这个问题的困扰。

0 投票
1 回答
1669 浏览

java - Spring Data Specifications - 如何通过多个属性过滤对象

我正在尝试通过多个属性来实现对用户的搜索。假设我的 Person 有 Name 和 Lastname。我想输入“Michael Doe”并列出所有具有此姓名和姓氏的人。当我只输入“迈克尔”时,我想要所有迈克尔等等。

我试图通过使用如下谓词来实现它:

但是,当我搜索“Michael Doe”时,我找到了所有 Michaels 和 Lastname Doe。我该如何解决我的问题?

提前感谢您的帮助。

0 投票
2 回答
4793 浏览

java - 如何使用 JPA Criteria 加入两个不相关的表?

在这里,我有两个表usersordersusers有两个字段first_namelast_name,并且orders有一个字段full_name。出于某种原因,我无法更改数据库架构。

现在我有一个查询:

我需要将其转换为 JPA 规范,因为它是其他规范的一部分。以下是我的尝试:

实体:

问题是,第一个参数下面的语句应该填什么

这是可行的吗?

谢谢

0 投票
1 回答
626 浏览

hibernate - java hibernate 5 子选择查询与 CriteriaBuilder 和 CriteriaSelect

我有一个带有 Hibernate 的 dropwizard 应用程序,并希望使用 Hibernate 5 的 CriteriaQuery 在 DAO (DataAccessObject) 中实现一个函数。更准确地说,我想查询一个表,其中的对象都配备了一个“id”列和一个“user_id”列(它是一个 PostgreSQL 数据库,表有更多字段,但另一个无关紧要)。

我想计算每个用户在该表中的平均对象数量,因此如果该表称为 table_a,我想使用 Java/Hibernates CriteriaQuery 编写以下查询:

我尝试查看此文档文档,但找不到有关执行此类子查询的任何参考。

我的 DAO 方法如下所示:

你能帮助我如何正确地做到这一点吗?并且不需要将所有结果拉到 Java-Objects 然后低效地计算它吗?

0 投票
1 回答
294 浏览

hibernate - JPA惰性OneToOne关系在不应该加载或查询实体时被获取?为什么?

给定这两个具有 OneToOne 关系的实体(A 作为拥有方,持有 B 实体 id):

我使用条件查询来获取给定日期内的所有 B 实体:

查询被执行,bRepository.findAll(BSpecification.filter(filter));我看到在基于日期获取 BEntities 之后......

...还有另一个获得一对一惰性相关的 AEntity:

由于性能原因,我需要阻止加载 AEntities,为什么这个标准会获取它们?

更新:试图简化我刚刚加载了一个 BEntities 的问题bRepository.findOne(bId),同样的事情发生了。所以这不是关于标准,而是关于映射。它出什么问题了?

0 投票
1 回答
987 浏览

java - 标准 API 不在 @ElementCollection 中

作为Permission枚举,是否可以使用 JPA Criteria API 在没有特定权限的情况下选择所有用户:

我目前的方法(不返回任何内容):

0 投票
2 回答
1528 浏览

java - 如何在 Criteria API(JPA) 中获取单个列的不同值

嗨,我是 JPA 和 Criteria API 的新手。我正在尝试获取单个列的不同值(试图仅获取 TestId 的不同值)。我的数据库中有下表。

我有以下课程模型类

存储库类

我得到以下错误。

部分对象查询不允许维护缓存或编辑。您必须使用 dontMaintainCache()。

0 投票
1 回答
2035 浏览

jpa - 在 QueryDSL 和 Spring Data JPA 中使用动态过滤器映射创建查询

我在我的应用程序中使用 Spring Data 和 JPA,我正在尝试为动态标准 API 实现 QueryDSL。就我在标准中发送特定值而言,使用以下谓词可以正常工作:

但是,如果我收到多个过滤器参数并希望使用 Map 来存储 (column_name - column_value) 的键值对以动态派生查询,我将无法创建相同的查询。意味着我知道我可以在 Predicate 中使用 and 或其他运算符添加尽可能多的条件,但我需要使用多少表达式仅在运行时决定,因此无法找出形成正确表达式的方法。

这是一些代码信息

现在过滤器可以从 1 到 n 个字段变化,其值类似于 filter 1 = product_id=123,title=test filter 2 =title= xyz, code= abc, vendor=pqr

所以我将使用 map 来存储键值对(title-xyz 等)并希望动态构造查询。

我经历了许多教程,但到目前为止找不到适合我的条件的解决方案。我也想过在迭代 map 循环时使用 Switch,但是如何组合所有表达式/谓词,我不知道。

如果我找不到解决方案,我可能会使用 JPA Criteria API,我们可以在其中轻松使用谓词列表。让我知道是否需要任何信息来帮助我。

谢谢

0 投票
2 回答
10005 浏览

spring - 使用 Spring JPA 规范进行多列搜索

我想在 Spring-Boot 后端创建一个多字段搜索。如何做到这一点Specification<T>

环境

前端的 UI 是一个 Jquery 数据表。每列允许应用单个字符串搜索词。多个列中的搜索词由 连接and

在此处输入图像描述

我已经将来自前端的过滤器填充到 Java 对象中。

步骤 1 扩展 JPA 规范执行器

Step2 创建一个新类 SomeSpec

这就是我对代码的外观和工作方式感到迷茫的地方。

每列都需要一个方法吗?什么是 Root,什么是 Criteria Builder?还需要什么?

我在 JPA 相当新,所以虽然我不需要任何人为我编写代码,但详细的解释会很好。

更新 看来 QueryDSL 是解决这个问题的更简单和更好的方法。我正在使用 Gradle。我需要从这里更改我的 build.gradle吗?

0 投票
1 回答
4662 浏览

java - JPA Criteria 查询使用带有连接的单个查询而不是多个查询急切获取关联实体

我们正在将 Hibernate 从 4.3.11 升级到 5.2.12 的范围内从 Hibernate 本机标准转移到 JPA 标准查询,并发现了不同的行为。以前的休眠条件使用带有连接的单个查询来急切地获取一对多的关联实体,但 JPA 使用单独的查询来获取每个根实体的关联实体。

我知道我可以显式设置获取模式,entityRoot.fetch("attributes", JoinType.INNER);但我们需要在一些 AbstractDao 实现中进行,该实现应该适用于任何急切的一对多关联,因此不能显式设置它。

那么我能否以某种方式告诉 JPA 标准在默认情况下使用连接而不是每个根实体的单独查询在单个查询中急切获取关联实体?

代码示例: