问题标签 [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 投票
0 回答
39 浏览

java - 使用不带字段映射的隐藏列对 @OneToMany 关系进行 JPA2 条件查询

我有一个Instrument包含这些字段的实体:

InstrumentSymbol现在在数据库中有一个名为symbold_instrumentIdHibernate 自动创建的列,但没有与之关联的属性。我怎样才能找到所有InstrumentSymbolwhere statusCodeis 1

我试过了

但这失败了

然后我尝试将自定义字段添加到我的@StaticMetamodel

但不幸的是,Hibernate 忽略了它:

如何创建有效的查询?

作为参考,这是以下的静态元数据InstrumentSymbol

(没有 FK 的列Instrument)。这是自动生成的 DDL:

0 投票
0 回答
84 浏览

java - JPA Criteria - join OneToMany relationship

I have a list of entities ActivityType in my Convention entity, in ActivityType entity i have a list of string specialties, in the query i want to pass an array of string to get all Convention entities which their specialties exists in the array, so i used the predicate isMember, but i get this error

unknown collection expression type [org.hibernate.query.criteria.internal.path.SetAttributeJoin]

stack trace

0 投票
1 回答
161 浏览

java - 在 Hibernate / JPA 中返回具有完整连接的 ResultSet

我有 2 个实体:EntityA 和 EntityB。它们与一对多关系相关。

我有一个查询,将 EntityA 与 LEFT JOIN 连接到实体 B。还有一个“ON”子句。在正常的 SQL 术语中,这将是:

因此,我从加入的结果集中获得了急需的信息。我只希望记录与某些属性匹配时加入。如果 EntityB 与连接子句匹配,我需要 EntityA、allways 和附加的 EntityB。

该项目使用 Hibernate / JPA 设置。我不知道如何检索所需的信息。此刻我有:

所以我在这里.. 卡在我的 EntityAs 列表中。每当我在 EntityA 上调用 getEntityBs() 时,我都会得到所有这些.. 这是有道理的.. 但是我怎样才能检索加入的集合?

我坚持使用 JPA 和 Hibernate,因为这个选择不是我做出的。

提前致谢!

0 投票
0 回答
848 浏览

jpa - 如何在 JPA Criteria Query 中使用 criteriaBuilder.construct 构建嵌套对象

我想用这个人作为电话 DTO 对象来查询电话列表,但是当我构造一个 DTO 对象时,它提供了一个错误。

条件查询:

这个怎么做??

criteriaQuery.select(builder.construct(PhoneDTO.class, id, number, type, builder.construct(PersonMediumDTO.class, personId, name, nickName, address, createdAt, version)));

如何构造嵌套对象?

0 投票
2 回答
719 浏览

java - JPA Criteria API“IN”谓词不起作用

我需要使用 JPA Criteria API 编写以下内容:

我的代码是:

运行时错误是

看起来某处有双输入。代码中没有语法错误。

我不能cb.in(List<String>)直接做,这是错误的语法。我必须in.value()按照此线程中的说明进行操作。

0 投票
1 回答
196 浏览

java - 在自定义存储库中使用 SpringBoot 和 JPA Criteria Query 查询时间戳

如何使用 JPA Criteria Query 根据自定义 JPA 存储库中的时间戳进行查询?

我有一个startTimeendTime我想用它来查询time它们之间的字段,但我需要在自定义存储库中执行此操作,因为我需要使用许多其他字段来构建复杂的查询。

我可以成功构建一个复杂的查询并获得正确的结果,除非我尝试使用startTimeand进行查询endTime。我一直在尝试做类似以下的事情,但没有运气

wheredata.getStartTime()data.getEndTime()are 的类型java.sql.Timestamp

这个想法是在和time之间的字段中获取所有带有时间戳的条目。startTimeendTime

关于如何做到这一点的任何想法?

谢谢。

0 投票
1 回答
1973 浏览

jpa - JPA 标准:在所有列的完整结果之前获取总计数;重用 Where 子句

JPA 标准中,我有一个有效的复杂查询。它涉及许多连接和一个复杂的 Where 子句。但就在我运行它以进行完整选择之前,我需要快速COUNT了解完整的结果集。

我试图重用我的where子句和我的所有联接,并从我的顶部元素中选择nvRoot,使用cb.count. 但我得到了错误Caused by: java.lang.IllegalStateException: No criteria query roots were specified

根据下面的评论,我尝试添加cqCount.from(Nv.class)代码,但这给了我:

Invalid path: 'generatedAlias2.id'

0 投票
2 回答
64 浏览

spring-boot - JPA CriteriaSepcification IN 子句

我正在使用SpringBoot 2.2.6withJPA并且我需要使用IN标题中提到的子句进行查询。我尝试过:

wherecriteria.getValue()是一个Integer[]数组,但它不起作用。你能帮助我吗?

谢谢你们。

更新

如果我尝试同样Query的方法,List<String>它会起作用!使用整数我有这个错误:

0 投票
2 回答
1434 浏览

java - 嵌套异常是 java.lang.ClassCastException: java.lang.String cannot be cast

我是 spring-data 的新手,我有这个错误java.lang.String cannot be cast to com.example.accessingdatamysql.User,不知道如何解决它!我添加了我的代码的各个相关部分。

该方法应按名称输出最旧的条目(通过时间戳)。

Main.Controller

User.java

RepoImpl.java

错误

0 投票
1 回答
1316 浏览

java - 多对多关系中 MAX id GROUP BY FOREIGN KEY 的 JPA 标准

我正在使用Spring Bootand开发一个应用程序Spring Data JPA

以下是相关实体:

在我的服务中,我有一个方法,CertificationService.findAll(). 这个想法是检索certification最新certification_status基于MAX(id)GROUP BY certification_id的记录WHERE certification_status_type_id = ?。此方法有五 (5) 个参数:

该组合可以是零 (0) 到五 (5)。因此,我选择应用 JPA Criteria。到目前为止,我已经编写了以下代码:

我对certificationTypeIddateFromdateToclient的标准有效。对于certificationStatusTypeId,我想根据以下 SQL 语句创建条件:

该语句在数据库中有效。不确定这是否是基于 和 选择记录的最佳MAX(id)查询GROUP BY certification_id组合WHERE certification_status_type_id = ?

感谢任何帮助。谢谢你。

**更新

现在这是我的代码:

但它会引发以下错误:

查看生成的 JPQL,它似乎与我的 SQL 语句相似。我只是不明白为什么会这样Invalid path

**更新我的道歉!我的 SQL 语句实际上类似于以下内容:

更新

这解决了。感谢您Thorben Janssen耐心地调查我的问题。

这是我的代码的最后一部分: