问题标签 [jpa-2.2]
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 - EclipseLink 2.7.0 和 JPA API 2.2.0 - 签名不匹配
运行由 maven 构建的项目时,具有以下依赖项:
我在运行时收到以下错误:
javax.persistence-2.2.0 工件已签名并包含 javax.persistence.Cacheable.class 注释,而 eclipselink-2.7.0 工件未签名并且还包含相同的 java 类注释。
如何解决这个问题?
编辑
将 javax.persistence 工件 2.2.0 版本替换为 2.1.1 版本可以解决问题(这个没有签名),但我不确定这是不是正常情况。
java - 从 JPA 2.1 升级到 JPA 2.2
我在升级到 JPA 2.2 时遇到问题。我正在使用 eclipselink 并更改了我的 pom 中的版本:
我还更新了 persistence.xml 以指向正确版本的 xsd:
问题是我收到以下错误消息:
persistence.xml 文件没有此 JPA 平台支持的内容。
我已经浏览了 eclipselink 文档,但没有任何事情发生在我身上。
有任何想法吗?
jpa - JPA 2.2/Java EE 8/Glassfish v5 中的 AttributeConverter 中的 @Inject 问题
JPA 2.2 应该支持@Inject
in AttributeConverter
,如规范中所述:
当启用 CDI [51] 时,Java EE 环境中的属性转换器类通过上下文和依赖注入 API (CDI) [7] 支持依赖注入。使用 CDI 注入的属性转换器类也可以定义使用 PostConstruct 和 PreDestroy 注释注释的生命周期回调方法。这些方法将分别在注入发生后和属性转换器实例被销毁之前调用。
但是当我将我的 JPA 2.1 转换器样本转换为 JPA 2.2 时,它不起作用。
原来的转换器 在 Glassfish v4 和 v5 中都可以工作:
为了体验 JPA 2.2 中的注入支持AttributeConverter
,我将转换逻辑提取到另一个 CDI bean。并尝试在 Glassfish v5(Java EE 8 参考实现)中运行代码。
和ConverterUtils
类。
在 中TagsConverter
,预期ConverterUtils
的没有注入,并且在调用它时总是得到 null,NPE 抛出了。
完整的代码可以在这里找到。
更新:我发现4 年前我在 EclipseLink bugzilla 上创建了一个问题。
hibernate - Hibernate 从哪个版本开始支持 JPA 2.2?
由于今年夏天发布了包含 JPA 2.2 的 Java EE 8,因此很高兴知道 Hibernate 何时会支持它。提到 Hibernate 5.2 以支持 JPA 2.1。Hibernate 6.0 路线图没有对 JPA 2.2 支持的任何引用。
谢谢。
spring - Spring JPA EntityGraph 获取所有延迟加载的属性
我使用过 Spring 和 Hibernate。现在看看 Spring Data JPA (2.0.3) 和 JPA 2.2
AgencyTicketType
代理票务类别
存储库
服务
在 Service 上进行调试时,查询似乎急切地获取所有延迟加载的属性 - 代理、代理TicketCategories - 及其所有内部延迟加载的属性,这会导致JSON 序列化错误。
只需要获取这些
我可以这样做@EntityGraph
吗?我错过了什么?
spring - 在 SPRING-BOOT 中为 Java 8 日期/时间使用更新的休眠或 JPA 2.2?
不支持使用 s pring-boot 1.5.10
(所以是当前的)来使用 Java8 日期/时间,因为默认情况下这个版本的 Spring Boot 使用. 为了实现这一点(Spring Boot 1.5.10),在覆盖版本的部分中起作用。 Hibernate 5.0.12.Final
pom.xml
properties
问题: 启用 Java8 日期/时间以覆盖休眠版本或以某种方式(如果是,那么如何?)将 JPA 2.2 用于 SPRING_BOOT 的最佳方法是什么?
编辑与休眠5.0.x
我不断得到:
01 05 2001', 'd M yyyy'), ParseDateTime('02 05 2001', 'd M yyyy')); 嵌套异常是 org.h2.jdbc.JdbcSQLException: Heksadecymalny string z nieparzystą liczbą znaków: "2001-01-01 00:00:00.0" 具有奇数个字符的十六进制字符串:"2001-01-01 00:00:00.0" ; SQL 语句:INSERT INTO 保留 (ID, RESERVATION_NAME, DATE_FROM, DATE_TO) VALUES (1, 'res1', ParseDateTime('01 01 2001', 'd M yyyy'), ParseDateTime('02 01 2001', 'd M yyyy ')),
但是使用时5.2.12.Final
一切正常。
java - JPA 标准 API 加入属性而不是类根
我有
(其中...
代表无参数构造函数、具有所有参数的构造函数以及所有属性的 getter 和 setter)我有以下工作查询,它适用于 Hibernate 5.2.12.Final (JPA 2.1):
现在,我想将查询转换为通过 JPA Criteria API 执行,但我似乎不知道如何在子查询中执行连接,因为我只找到Root.join
了属性,并且Root
始终引用由表示的实体一类。这导致以下尝试:
(只需要修复子查询)。
根据诸如JPA/Metamodel: Strange (inconsistent ?) example in Sun Docs 之类的帖子(这解释了 Oracle 作者非常周到地在他们的教程中列出了不可能的示例,但这是另一个问题),有CriteriaQuery.join
,但事实并非如此AFAIK。
如果 JPA 2.2 或(如果已经有任何计划,则为 2.3)会解决问题,以防除了我之外还有其他人没有找到解决方案,我会很感兴趣。
由于这是我加深理解的练习(JPQL 查询已经有效),我正在寻找一个可引用的参考资料,为什么这是不可能的,因为如果是这种情况,条件 API 的限制。
如果您想进一步调查,可以在https://gitlab.com/krichter/jpa-subquery-attribute-join找到 SSCCE,这可以节省您创建实体类的时间。
hibernate - JPA 使用 ZoneOffset 存储 OffsetDateTime
我有以下实体类:
但是,使用 JPA 2.2 将实体持久化并从数据库中读取实体会导致信息丢失:更改(数据库时间戳使用的)ZoneOffset
。例如:startDateTime
UTC
ZoneOffset
我需要使用OffsetDateTime
:我不能使用ZonedDateTime
,因为区域规则发生了变化(并且无论如何也会遭受这种信息丢失的影响)。我不能使用LocalDateTime
,因为世界上任何地方都发生过,出于准确性原因,我需要它发生时Event
的原件。ZoneOffset
我不能使用Instant
,因为用户填写了事件的开始时间(事件就像约会)。
要求:
需要能够
>, <, >=, <=, ==, !=
在 JPA-QL 中对时间戳进行比较需要能够检索与持久化的相同
ZoneOffset
的OffsetDateTime
java - 在 JPA-QL(或 HQL)查询中可比较的 Hibernate CompositeUserType
我为 Hibernate 创建了一个自定义类型来存储OffsetDateTime
的时间戳和偏移量(因为默认的 JPA 2.2 / Hibernate 5.2 with java 8 support implementation丢失了偏移量信息):
现在,我希望能够比较它,所以这个 JPA-QL 查询有效:
在这个模型上:
}
但这失败了:
如何使我的 CustomUserType 具有可比性?
jpa - Flyway 与 JPA + OSGi 的集成
在我当前的项目中,我已将 JPA 集成到 OSGi 独立应用程序中。对于集成,我采用了以下 OSGi 规范实现:
- OSGi R7 平台 (Equinox 3.13.0)
- JPA 2.2 (Eclipselink 2.7.1)
- JPA 容器
- Apache Aries JPA 容器 2.7.0
- Apache Aries JPA Eclipselink 适配器 2.7.0
- JDBC 服务 (PAX JDBC MariaDB 1.3.0)
这种集成完美无缺。
下一步 - Flyway 集成。数据库迁移脚本应该直接打包到 Persistence Bundle 中。现在我想在创建 DataSource 时准确地触发迁移,就在注册 EntityManagerFactory 和 EntityManagerFactoryBuilder 服务之前。此时我应该可以访问 Persistence Bundle 类加载器,并且应该有一个初始化的数据源。我发现的唯一解决方案是重构 Apache Areas JPA 容器并将 Flyway 迁移调用放入 AriesEntityManagerFactoryBuilder.dataSourceReady。Flyway 触发器存储为 JPA 属性中的位置,如下所示:
这个解决方案是正确放置在一个完美的时间调用。但它并没有与 OSGi JPA 服务规范 1.1 确认,而是作为一个钩子实现到 Apache Aries JPA 容器中。
是否有另一种更完美和规范确认的解决方案可以将 Flyway 集成到我的项目中?