问题标签 [deltaspike-jpa]

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 回答
628 浏览

java - Deltaspike 中的回滚 JUnit 测试

我在 Java SE 项目中将 Apache Deltaspike 与 OpenWebBeans 一起用于 CDI。我在 Java EE 项目中使用了 Spring Data JPA,通过@Transactional在类或测试方法上方添加注释来设置不向数据库提交数据的单元测试很容易。但是,我无法找到与 Deltaspike 等效的技术。

除了在每次测试后手动回滚数据或每次运行测试时删除并重新创建数据库之外,有没有办法指定每个单元测试完成后应该回滚数据更改?

我的单元测试如下所示:

0 投票
1 回答
668 浏览

java - DeltaSpike 测试控制 - 未找到持久性单元

我正在尝试使用 DeltaSpike 测试控制模块为我正在开发的新 maven 应用程序创建集成测试

它被部署在 Wildfly 9 实例上

一个简单的测试用例:

我有一个看起来像这样的persistence.xml内部:src/test/resources/META-INF

实体管理器由 CDI 生产者方法公开:

问题是EntityManagerFactory创建时仍然为空EntityManager

欢迎任何帮助。

0 投票
2 回答
1136 浏览

java - 仅在辅助表中保留值

任何人都有如何将值仅保留在辅助表中的示例?

我正在尝试仅更新辅助表(AccountComment)中的值。我正在使用休眠 4 和 JPA2。

尝试了以下代码,

它不工作。也没有错误日志。当我调用该saveAccountComment()方法时。它只是卡住了。

有人知道如何仅将值保留在辅助表中吗?

0 投票
1 回答
884 浏览

cdi - Deltaspike 数据 (CDI + JPA) 自定义 PrePersistAuditListener 和 PreUpdateAuditListener 用于 UTC 的自定义 java.time.ChronoLocalDateTime

Wildfly 9.0.2.Final 上的 Deltaspike Ver 1.7.2

我在实体 bean 上使用 JPA 和 Deltaspike 数据(和注释)@EntityListeners(AuditEntityListener.class)的审计功能,@CreatedOn不同之处在于我有一个自定义实现,它将任何+ OR a转换为 UTC 日期和时间。@ModifiedOn@ModifiedByjava.time.ChronoLocalDateTimeLocalDateTimeZoneOffsetZonedDateTime

UTC日期时间

实体 bean 部分

UTCDateTime 类还有一个自定义的 AttributeConverter,因为 epoch 值保存在数据库中。

现在,当我坚持实体时,我得到以下异常(真正原因的最后一点):

有没有办法实现我自己的org.apache.deltaspike.data.impl.audit.PrePersistAuditListenerorg.apache.deltaspike.data.impl.audit.PreUpdateAuditListener使用它们来创建实例UTCDateTime

编写我自己的 EntityListener -->UTCDateTimeAuditListener并在遵循方法的@EntityListeners(UTCDateTimeAuditEntityListener.class)地方使用它是否正确?UTCDateTimeAuditListenerorg.apache.deltaspike.data.impl.audit.AuditEntityListener

其次,我是否需要在某处使用 CDI 限定符以确保我UTCDateTimeAuditEntityListener获得对知道如何构造实例的正确PrePersistAuditListener和实现的引用?PreUpdateAuditListenerUTCDateTime

最后,我不知道它是否相关,但在哪里org.apache.deltaspike.data.impl.audit.TimestampsProvider适合这种情况?

更新

我在回答我的问题方面取得了一些进展。到目前为止我所做的。不需要定制AuditEntityListener,DeltaSpike 提供的定制就足够了。

我创建了一个TimestampsProvider能够处理我的UTCDateTime对象的新实现。

beans.xml 还将其列为 CDI @Alternative

内容apache-deltaspike.properties

现在的问题是两个AuditProvider实例都被执行了,首先是我的实现(UTCDateTimeAuditProvider)然后是默认的TimestampsProvider

我尝试了各种组合,仅使用注释指定我的@Alternative 实现,或者仅在 beans.xml 中以及在类和 beans.xml 中。

有谁知道为什么TimestampsProvider在我的@Alternative 实现之后执行默认值?

Wildfly 9.0.2.Final 和 Weld 2.2.16 (SP1) 上的 Deltaspike Ver 1.7.2

0 投票
1 回答
378 浏览

jakarta-ee - Wildfly - deltaspike - 交易未提交?

我正在使用 Wildfly 10 和 Deltaspike,并且在持久化实体时遇到问题。当我尝试刷新它或保留另一个引用它的实体时,问题就会出现。当我尝试刷新它时,我得到表明该实体不受管理的异常。如果我尝试持久化引用它的另一个实体,那就是当我得到表明该实体处于瞬态的异常时。

我正在使用 JTA,实体应该更早提交,因为它保存在另一个方法调用中。

我尝试过使用容器管理事务和 Bean 管理事务。关于这一点,似乎只有 apache-deltaspike.properties 文件对改变它有任何影响。我还手动启用了事务拦截器,但我不认为这有什么不同,因为无论是否在 beans.xml 中显式激活它都可以启用它。@Transactional 注释似乎并没有真正提交事务(我使用各种参数对其进行了测试,我本来预计会有一个不同的异常,但只是去同一个)。

日志语句显示 id 为 0,未设置。现在,如果我查询这个序列,我发现它被击中了这么多次,它在 189 处......

实际的例外是当我尝试这样做时:

那是当我得到表明该实体不受管理的异常时。正如我所指出的,我可以看到根据日志激活了事务拦截器。

有任何想法吗?

0 投票
2 回答
650 浏览

java - Deltaspike 替代 TransactionStrategy 问题

在我的 wildfly swarm 应用程序中,我想将 deltaspike 与数据模块、JPA 和 JTA 一起使用。

我已将 beans.xml 定义为使用EnvironmentAwareTransactionStrategy作为TransactionStrategy

但是,当我运行我的应用程序时,会引发此异常:

CDI 使用了默认的 TransactionStrategy (ResourceLocalTransactionStrategy) 而不是我的 beans.xml 中定义的替代方案 (EnvironmentAwareTransactionStrategy)。

文件beans.xml很好地位于src/main/resources/META-INF和我的pom.xml我有

我怎样才能做到这一点?

0 投票
1 回答
204 浏览

spring-data - 带有可选参数的 Spring Data JPA 查询

我有一个 GET 端点,它根据以下参数获取数据。firstName 是必需的,其余都是可选的。

我应该如何处理数据库查询?我正在使用 Sring Data JPA,我已经尝试过

findByFirstNameOrLastNameOrGenderOrCity(名字,姓氏,性别,城市)

不确定使用 @Query 注释的本机 sql 查询是否可以工作,因为如果端点的使用者没有发送值,则除了 firstName 之外的任何值都可以为 null。请帮助

0 投票
0 回答
470 浏览

java - Deltaspike 存储库事务提交,但 Java SE 中的 DB 中没有任何内容

我正在使用 DeltaSpike 存储库在 Java SE 中持久化一个实体,并且我正在使用基于文件的 H2 数据库。问题是,虽然控制台中没有错误,但数据库中没有任何内容。我使用独立客户端检查了数据库内容。我还尝试在持久性完成后立即使用存储库获取内容,但没有得到任何结果。

当我尝试使用实体管理器(纯 JPA)直接持久化它时,它会被持久化,并且当我在 GUI 客户端中打开文件时可以看到记录。

项目结构如下:

在此处输入图像描述

以下是 中的依赖项pom.xml

persistence.xml文件是这样的:

实体管理器的生产者类:

实体类:

存储库类:

调用存储库的服务 bean:

应用程序的主要类:

有人知道(可能)DeltaSpike 配置中可能遗漏了什么吗?还是这种配置中的预期行为?

0 投票
1 回答
204 浏览

jpa - OutOfMemoryError 导致提交 JPA 事务

当我的系统收到“OutOfMemoryError: Java heap space”时,它会提交事务(标有org.apache.deltaspike.jpa.api.transaction.Transactional注释)。

如何避免这种情况并进行回滚?“常规”异常确实会导致回滚。

我的 JPA 实现是 EclipseLink 2.6.4,容器是运行 Java 8 的 Tomcat 8.5.33。

0 投票
1 回答
36 浏览

java - 如何在 Apache Delta Spike 中执行存储过程

我在我的项目中使用 Apache Delta Spike 的 Data 模块,但是,我在它的文档中找不到执行和从存储过程调用中获取结果的正确方法......

有人能帮我吗?