gpt4 book ai didi

spring - 运行测试时跳过 JPA 生命周期方法

转载 作者:行者123 更新时间:2023-12-03 03:22:03 26 4
gpt4 key购买 nike

我有一个实体 Post 并注册了一个事件监听器,如下所示。

@EntityListeners({EntityAuditor.class})
@Entity
class Post {
...
}

这是我的 EntityAuditor 监听器类的样子:

public class EntityAuditor {
@PostPersist
void publishToKafka(Object object) {
// publish new object to Kafka
}
}

当我的单元/集成测试尝试创建新帖子时,我不希望调用此函数。有没有办法可以跳过 JPA 生命周期 Hook 或仅用于测试的事件监听器?

最佳答案

根据 JPA 规范 EntityListeners可以使用 <entity-listeners> 覆盖注释<entity> 的子元素持久化对象/关系中的元素映射文件。

因此,您应该仅在您的测试环境中包含 META-INF/orm.xml 文件,并设置一个空 <entity-listeners>为您的实体。像这样的事情

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm http://xmlns.jcp.org/xml/ns/persistence/orm_2_2.xsd"
version="2.2">
<entity class="yourpackage.Post">
<entity-listeners />
</entity>
</entity-mappings>

关于spring - 运行测试时跳过 JPA 生命周期方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60304120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com