hibernate Quarkus实体持久性问题:自定义扩展的“不是实体”错误

a5g8bdjr  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(187)

我正在做一个Quarkus扩展,在尝试持久化实体时遇到了一个问题。我已经定义了一个名为ConfigurationEntity的实体类,但是当我试图将其持久化到我的主应用程序中时,我收到以下错误:

Error adding configuration: Not an entity [class com.acme.generalutils.runtime.configurationmanager.model.Entity.ConfigurationEntity]

下面是我的实体的代码:

@Entity
@Table(name = "configuration")
public class ConfigurationEntity extends BaseEntity {
   // Fields and methods
}

在我的扩展中,我添加了一个构建步骤来注册ExclusionEntity类:

@BuildStep
AdditionalBeanBuildItem registerConfigurationEntity() {
    return AdditionalBeanBuildItem.unremovableOf(ConfigurationEntity.class);
}

我已经验证了注解,并检查了我的application.properties文件是否正确配置,但问题仍然存在。我没有使用persistence.xml文件,因为我相信Quarkus应该在没有它的情况下处理这个问题。
有没有人以前遇到过这个问题,或者有什么想法可能会导致这个错误?任何帮助将不胜感激!
我尝试了什么:

  • 已确保正确导入所有注解。
  • 已检查应用程序的application.properties以获取正确的JPA设置。
  • 已尝试在开发模式下进行完全重新生成。
  • 看了Jandex索引,但我不确定这是否是我的情况下需要的。

提前感谢您的任何见解!

t3psigkw

t3psigkw1#

我不知道你为什么要开发一个Quarkus扩展?您不需要扩展来将Hibernate ORM实体添加到Quarkus应用程序。你也可以简单地把实体放在一个单独的库jar中(只是一个简单的jar,而不是一个扩展),只要你用Jandex Maven插件索引它,它们就会被Quarkus发现。但让我们考虑一下你实际上需要一个扩展。
Hibernate ORM实体不是bean,所以你不应该使用AdditionalBeanBuildItem,这是为了注册CDI bean。
您可以使用AdditionalJpaModelBuildItem从扩展注册其他实体。但是,如果您的模型变得复杂并且AdditionalJpaModelBuildItem变得不切实际,那么使用Jandex Maven插件索引运行时jar也应该有效。请注意,您需要通过此构建项添加所有实体,Quarkus不会遵循JPA关系来发现其他实体。

相关问题