我正在做一个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索引,但我不确定这是否是我的情况下需要的。
提前感谢您的任何见解!
1条答案
按热度按时间t3psigkw1#
我不知道你为什么要开发一个Quarkus扩展?您不需要扩展来将Hibernate ORM实体添加到Quarkus应用程序。你也可以简单地把实体放在一个单独的库jar中(只是一个简单的jar,而不是一个扩展),只要你用Jandex Maven插件索引它,它们就会被Quarkus发现。但让我们考虑一下你实际上需要一个扩展。
Hibernate ORM实体不是bean,所以你不应该使用
AdditionalBeanBuildItem
,这是为了注册CDI bean。您可以使用
AdditionalJpaModelBuildItem
从扩展注册其他实体。但是,如果您的模型变得复杂并且AdditionalJpaModelBuildItem
变得不切实际,那么使用Jandex Maven插件索引运行时jar也应该有效。请注意,您需要通过此构建项添加所有实体,Quarkus不会遵循JPA关系来发现其他实体。