问题标签 [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.
java - JPA CriteriaQuery 实现 Spring Data Pageable.getSort()
我使用 JPA CriteriaQuery 构建动态查询并传入 Spring Data Pageable 对象:
在后端,我的存储库中有一个方法来支持动态查询:
注意:我只放了一个参数用于演示目的。
但是返回的数据是未排序的,因此我想问的是在 CriteriaQuery 中实现 Pageable 的任何方法。
hibernate - 如何在 JPA Criteria API 中正确应用连接提取
我在基于 Spring 数据 JPA 的应用程序中使用 JPA Criteria API。我的服务类使用静态方法来检索Specifications
,然后可以将它们组合在一起以形成特定的查询。例如
在这里,我使用了两种返回 Specifications 的方法,并应用了适当的标准。这就是这两种方法的样子
这工作正常。我想添加一个
root.fetch(SomeEntity_.employee, JoinType.INNER);
这样一来,使用静态规范方法的任意组合构建的所有查询都使用FETCH JOIN
.
如果我将此语句添加到两个静态方法中,则 INNER JOIN 会应用两次,这似乎不正确。理想情况下,我认为我应该有另一个只应用FETCH JOIN
并返回规范的静态方法,但我似乎无法弄清楚如何在Predicate
不使用任何criteriaBuilder
方法的情况下返回 a。为了澄清,这就是我的方法应该是这样的:
任何帮助,将不胜感激。
java - EclipseLink 复合 PK 与 FK
我正在使用 eclipselink 2.5.1。
假设我有这两个类。
JAVA
Car 有一个复合主键(idManufacturor 和日期),idManufacturor 也是一个引用类 Manufacturor 的外键。
我的映射有问题。EclipseLink 将制造商对象理解为我的 Car 表中的一列。
错误
我知道如果我添加一个列制造商 FK,问题将得到解决,但它会重复。
如果我不够清楚,请随时要求任何精确度。
感谢您的帮助。
java - 带有排序的 Spring JPA 规范
我正在使用 Spring JPA。
更准确地说,我使用的是一个扩展的存储库,JpaRepository
因为JpaSpecificationExecutor
我需要分页、过滤和排序。
现在我的分页和过滤都工作得很好,但我不能让排序也能正常工作。
我有些失望地注意到有一些JpaSpecificationExecutor
方法findAll()
:
但我需要的一个:
不存在!
所以,计划 B,在规范中包括排序。
在此问题的已接受答案的帮助下:JpaSpecificationExecutor JOIN + ORDER BY in Specification我整理了以下内容:
wherespringFilterMap
是一个实例字段,Map<String,String>
其键是字段名称,值是过滤器值。
在上面你会看到我尝试按姓氏订购,但这似乎没有效果。
我究竟做错了什么; 以及如何实现分页和过滤的排序?
java - 编写子查询以比较 JPA Criteria 中的列表
我有以下实体结构:
我必须使用 spring-data-jpa 规范编写 SQL 代码的以下部分:
SELECT * FROM A WHERE ~~blahblahblah~~ AND **bId in (SELECT bs FROM C WHERE cId = myCId)**
我试着这样做:
但它不起作用。我的错误在哪里?
hibernate - 不从休眠中的 Criteria Builder 查询调用 UserType api 方法
我有一个场景,我使用org.hibernate.usertype.UserType为休眠中的实体字段使用自定义用户类型。
这是日期转换为 UTC
我的实体类如下
当当前时间大于出生日期时,我有两个查询要从 Db 中检索人
1)jpql中的一个,实际上按预期调用了UserType#nullSafeSet
2)但是如果我通过标准构建器构建相同的查询,则永远不会调用 UTCTimestampType 类中的UserType#nullSafeSet实现,并且查询只会执行。
不知道为什么会这样
这是我对案例 (1) 的示例单元测试
但是我的条件查询没有通过我的自定义 UserType 类
我希望在执行查询之前将出生日期字段转换为 UTC 时区,这在 jpql 查询中有效,但在标准生成器中,从不调用自定义类型,并且查询以传递的时间执行。我的结束 sql 语句应该是 Ex:SELECT * FROM Person p where p.birthDtTm = date;
日期在 UTC 时区
java - 如何将可变数量的参数传递给 Spring Data/Hibernate/JPQL 查询
我需要将可变数量的参数传递给 spring/JPA repo 来模仿这样的东西。
到目前为止,我还无法确定正确的方法是什么。我正在使用 Spring 4.3.7、Hibernate 5.2.9 和 Spring Data 1.11.1。我用谷歌搜索了一下,似乎没有办法用普通的 CRUD 回购来做到这一点,但到目前为止,我还没有找到任何看起来像我需要的例子。我认为CriteriaBuilder
这是我应该使用的,但这似乎已经失宠,所以我不确定这样做的正确方法是什么。
java - 带有实体/对象的 JPA CriteriaBuilder 集合操作
我正在使用 JPA CriteriaBuilder api 生成查询,我有以下一组 bean:
- 艺术家(包含艺术家数据,如姓名、性别、地址等)
- 角色(包含艺术家扮演的角色,如角色 ID、角色类型、角色描述等)
艺术家可以扮演不同的角色,因此它是一对多的关系 b/w Artist & Role 实体。我想使用criteriabuilder编写一个查询来获取所有没有扮演“HERO”角色的艺术家:
我发现criteriabuilder api提供了处理集合的功能,例如:
但是,我在互联网上找到的这些函数的示例主要是使用字符串集合。正如本网站(http://www.objectdb.com/java/jpa/query/jpql/collection)上给出的那样,检查语言集合不包含法语:
如何使用与实体相同的函数“isNotMember”来获取所有不具有角色类型为 HERO 的角色的艺术家?
java - JPA CriteriaBuilder 像双倍
我正在尝试从旧数据库中检索数据。
表中的列定义为包含帐号的 DECIMAL(13,0)。
无法更改列数据类型,因为它将对遗留系统产生重大影响。基本上所有使用该表的程序都需要更改然后重新编译,这不是一个选项。
我们有一个需求,就是要找到所有账号中包含值的记录,比如用户可以搜索 12345,所有账号中包含 12345 的账号都应该返回。
如果这是一个 CHAR/VARCHAR,我会使用:
作为定义为 DECIMAL(13,0) 的列的结果,accountNumber 属性是一个双精度值。
有没有办法在 DECIMAL/double 字段上执行类似的操作?
SQL将是
java - Spring Data JPA crudrepository 保存方法是否有任何返回值?如果是这样,它会返回什么?
我怎么知道我的数据已成功插入到上面的代码中?