测试期间出现异常:只有一个实体可以用@RevisionEntity进行注释



我正在尝试使用enver审计实体。我使用的是spring-boot(2.6.6(、hibernate内核(5.6.7.Final(和hibernate环境(5.6.7.Final(

我有两个数据库postgres和oracle,两个数据源和两个RevisionEntity,因为我不得不用user_name扩展REVINFO表。一切都正常工作,创建了spring上下文,使用两个数据库中的全部数据对实体进行了正确的审计。

package com.common.revision;
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@MappedSuperclass
public abstract class CustomRevisionEntity {
@Id
@GeneratedValue
@RevisionNumber
private int rev;
@RevisionTimestamp
private long revtstmp;
@Column(name = "user_name")
private String userName;
}
package com.database.oracle.domain.revision;
@Data
@Entity(name = "REVINFO")
@RevisionEntity(CustomRevisionListener.class)
public class LegacyRevisionEntity extends CustomRevisionEntity {
}
package com.database.oracle.domain.revision;
@Configuration
@EnableJpaRepositories(basePackageClasses = {LegacyRevisionEntity.class},
entityManagerFactoryRef = "entityManagerFactoryOracle",
transactionManagerRef = "transactionManagerOracle")
public class DatastoreConfigurationOracle {
...
package com.database.postgres.domain.revision;
@Data
@Entity(name = "REVINFO")
@RevisionEntity(CustomRevisionListener.class)
public class ExtensionRevisionEntity extends CustomRevisionEntity {
}
package com.database.postgres;
@Configuration
@EnableJpaRepositories(basePackageClasses = {
BaseModExtensionEntity.class,...  },
entityManagerFactoryRef = "entityManagerFactoryPostgres",
transactionManagerRef = "transactionManagerPostgres")
public class DatastoreConfigurationPostgres {
...

问题出在一个测试上:

@ExtendWith(SpringExtension.class)
@DataJpaTest
class RepositoryTest{
@Autowired
Repository repository;
@Test
public void find() {

}
}

我收到一个错误:实体共享相同的JPA实体名称:[REVINFO],这是不允许的!所以我把一个表名改为REV_INFO,所以现在我得到了这个错误:

由:org.hubinate.MappingException引起:只有一个实体可以用@RevisionEntity进行注释!

我曾尝试将@EnableAutoConfiguration与exclude一起使用,但它不起作用——与其他服务的许多连接都不起作用。

你知道如何修复它吗?为什么测试失败时应用程序仍在工作?

我猜您在测试中没有使用相同的@Configuration?尝试对齐配置。通常,您必须为实体扫描配置分配一个持久性单元名称,以获得多个PersistenceUnit,从而获得EntityManagerFactory,然后您可以在存储库类中通过名称引用它。看见https://www.baeldung.com/spring-data-jpa-multiple-databases例如

最新更新