问题标签 [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.

0 投票
10 回答
14369 浏览

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 版本可以解决问题(这个没有签名),但我不确定这是不是正常情况。

0 投票
2 回答
7875 浏览

java - 从 JPA 2.1 升级到 JPA 2.2

我在升级到 JPA 2.2 时遇到问题。我正在使用 eclipselink 并更改了我的 pom 中的版本:

我还更新了 persistence.xml 以指向正确版本的 xsd:

问题是我收到以下错误消息:

persistence.xml 文件没有此 JPA 平台支持的内容。

我已经浏览了 eclipselink 文档,但没有任何事情发生在我身上。

有任何想法吗?

0 投票
0 回答
685 浏览

jpa - JPA 2.2/Java EE 8/Glassfish v5 中的 AttributeConverter 中的 @Inject 问题

JPA 2.2 应该支持@Injectin 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 上创建了一个问题。

0 投票
2 回答
3832 浏览

hibernate - Hibernate 从哪个版本开始支持 JPA 2.2?

由于今年夏天发布了包含 JPA 2.2 的 Java EE 8,因此很高兴知道 Hibernate 何时会支持它。提到 Hibernate 5.2 以支持 JPA 2.1。Hibernate 6.0 路线图没有对 JPA 2.2 支持的任何引用。

谢谢。

0 投票
3 回答
792 浏览

spring - Spring JPA EntityGraph 获取所有延迟加载的属性

我使用过 Spring 和 Hibernate。现在看看 Spring Data JPA (2.0.3) 和 JPA 2.2

AgencyTicketType

代理票务类别

存储库

服务

在 Service 上进行调试时,查询似乎急切地获取所有延迟加载的属性 - 代理、代理TicketCategories - 及其所有内部延迟加载的属性,这会导致JSON 序列化错误

只需要获取这些

我可以这样做@EntityGraph吗?我错过了什么?

0 投票
3 回答
3920 浏览

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.Finalpom.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一切正常。

0 投票
0 回答
1187 浏览

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,这可以节省您创建实体类的时间。

0 投票
2 回答
14038 浏览

hibernate - JPA 使用 ZoneOffset 存储 OffsetDateTime

我有以下实体类:

但是,使用 JPA 2.2 将实体持久化并从数据库中读取实体会导致信息丢失:更改(数据库时间戳使用的)ZoneOffset。例如:startDateTimeUTCZoneOffset

我需要使用OffsetDateTime:我不能使用ZonedDateTime,因为区域规则发生了变化(并且无论如何也会遭受这种信息丢失的影响)。我不能使用LocalDateTime,因为世界上任何地方都发生过,出于准确性原因,我需要它发生时Event的原件。ZoneOffset我不能使用Instant,因为用户填写了事件的开始时间(事件就像约会)。

要求:

  • 需要能够>, <, >=, <=, ==, !=在 JPA-QL 中对时间戳进行比较

  • 需要能够检索与持久化的相同ZoneOffsetOffsetDateTime

0 投票
1 回答
1050 浏览

java - 在 JPA-QL(或 HQL)查询中可比较的 Hibernate CompositeUserType

我为 Hibernate 创建了一个自定义类型来存储OffsetDateTime的时间戳偏移量(因为默认的 JPA 2.2 / Hibernate 5.2 with java 8 support implementation丢失了偏移量信息):

现在,我希望能够比较它,所以这个 JPA-QL 查询有效:

在这个模型上:

}

但这失败了:

如何使我的 CustomUserType 具有可比性?

0 投票
1 回答
281 浏览

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 集成到我的项目中?