当前位置: 首页 > 知识库问答 >
问题:

Quakus Hibernate没有找到所需类型[接口javax.transaction.TransactionManager]和限定符[[]]的bean

张权
2023-03-14

我从Quarkus网站上设置了一个Quarkus/静态编程语言/Gradle项目。我正在尝试使用hibernate/panache/reactive制作一个简单的反应式api:

  • Quarkus 1.13.6。期末考试

API:

@Path("incidents")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
class IncidentResource {

    @Inject
    lateinit var incidentRepository: IncidentRepository

    @GET
    @Path("hello")
    @Produces(MediaType.TEXT_PLAIN)
    fun getHello(): String = "hello"

    @GET
    fun get(): Uni<List<Incident>> = incidentRepository.findAll().list()
}

型号:

@Entity
data class Incident(
        @Id
        @GeneratedValue
        @field:JsonProperty("id")
        val id: String,

        @Column(nullable = false)
        @field:JsonProperty("summary")
        val summary: String,
)

存储库:

@ApplicationScoped
class IncidentRepository : PanacheRepository<Incident> {
}

/事件/你好路径工作正常,但/事件给了我一个错误:

Request failed : javax.enterprise.inject.UnsatisfiedResolutionException: No bean found for required type [interface javax.transaction.TransactionManager] and qualifiers [[]]
        at io.quarkus.arc.impl.InstanceImpl.bean(InstanceImpl.java:175)
        at io.quarkus.arc.impl.InstanceImpl.getInternal(InstanceImpl.java:196)
        at io.quarkus.arc.impl.InstanceImpl.get(InstanceImpl.java:93)
        at io.smallrye.context.jta.context.propagation.JtaContextProvider.tm(JtaContextProvider.java:120)
        at io.smallrye.context.jta.context.propagation.JtaContextProvider.currentContext(JtaContextProvider.java:34)
        at io.smallrye.context.impl.ThreadContextProviderPlan.takeThreadContextSnapshots(ThreadContextProviderPlan.java:72)
        at io.smallrye.context.impl.SlowCapturedContextState.<init>(SlowCapturedContextState.java:25)
        at io.smallrye.context.SmallRyeThreadContext.captureContext(SmallRyeThreadContext.java:729)
        at io.smallrye.context.SmallRyeThreadContext.contextualSupplier(SmallRyeThreadContext.java:719)
        at io.smallrye.mutiny.context.BaseContextPropagationInterceptor.decorate(BaseContextPropagationInterceptor.java:27)
        at io.smallrye.mutiny.infrastructure.Infrastructure.decorate(Infrastructure.java:124)
        at io.smallrye.mutiny.groups.UniCreate.completionStage(UniCreate.java:134)
        at org.hibernate.reactive.mutiny.impl.MutinySessionFactoryImpl.uni(MutinySessionFactoryImpl.java:62)
        at org.hibernate.reactive.mutiny.impl.MutinyQueryImpl.uni(MutinyQueryImpl.java:40)
        at org.hibernate.reactive.mutiny.impl.MutinyQueryImpl.getResultList(MutinyQueryImpl.java:191)
        at io.quarkus.hibernate.reactive.panache.common.runtime.CommonPanacheQueryImpl.lambda$list$4(CommonPanacheQueryImpl.java:219)
        at io.quarkus.hibernate.reactive.panache.common.runtime.CommonPanacheQueryImpl.applyFilters(CommonPanacheQueryImpl.java:323)
        at io.quarkus.hibernate.reactive.panache.common.runtime.CommonPanacheQueryImpl.list(CommonPanacheQueryImpl.java:219)
        at io.quarkus.hibernate.reactive.panache.runtime.PanacheQueryImpl.list(PanacheQueryImpl.java:149)
        at com.alert.api.IncidentResource.get(IncidentResource.kt:26)
        at com.alert.api.IncidentResource_Subclass.get$$superaccessor5(IncidentResource_Subclass.zig:733)
        at com.alert.api.IncidentResource_Subclass$$function$$8.apply(IncidentResource_Subclass$$function$$8.zig:29)
        at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
        at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)
        at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:49)
        at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(InvocationInterceptor_Bean.zig:521)
        at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)
        at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
        at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32)
        at com.alert.api.IncidentResource_Subclass.get(IncidentResource_Subclass.zig:691)
        at com.alert.api.IncidentResource$quarkusrestinvoker$get_407a850349137c93edc5dab2a621b8699ccd0a7c.invoke(IncidentResource$quarkusrestinvoker$get_407a850349137c93edc5dab2a621b8699ccd0a7c.zig:33)
        at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
        at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:7)
        at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:122)
        at org.jboss.resteasy.reactive.server.handlers.RestInitialHandler.beginProcessing(RestInitialHandler.java:47)
        at org.jboss.resteasy.reactive.server.vertx.ResteasyReactiveVertxHandler.handle(ResteasyReactiveVertxHandler.java:17)
        at org.jboss.resteasy.reactive.server.vertx.ResteasyReactiveVertxHandler.handle(ResteasyReactiveVertxHandler.java:7)
        at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1038)
        at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:137)
        at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132)
        at io.quarkus.vertx.http.runtime.StaticResourcesRecorder.lambda$start$1(StaticResourcesRecorder.java:65)
        at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1038)
        at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:101)
        at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132)
        at io.vertx.ext.web.handler.impl.StaticHandlerImpl.lambda$sendStatic$1(StaticHandlerImpl.java:206)
        at io.vertx.core.impl.ContextImpl.lambda$null$0(ContextImpl.java:327)
        at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:366)
        at io.vertx.core.impl.EventLoopContext.lambda$executeAsync$0(EventLoopContext.java:38)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:834)

我还有一个警告:

CDI: programmatic lookup problem detected
-----------------------------------------
At least one bean matched the required type and qualifiers but was marked as unused and removed during build
Removed beans:
        - CLASS bean io.smallrye.context.jta.context.propagation.JtaContextProvider$LifecycleManager [types=[class io.smallrye.context.jta.context.propagation.JtaContextProvider$LifecycleManager], qualifiers=[@javax.enterprise.inject.Default(), @javax.enterprise.inject.Any()]]
Required type: class io.smallrye.context.jta.context.propagation.JtaContextProvider$LifecycleManager
Required qualifiers: [@javax.enterprise.inject.Default()]

application.properties

quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=test
quarkus.datasource.password=test

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.log.sql=true
quarkus.hibernate-orm.sql-load-script=import.sql

# Reactive config
quarkus.datasource.reactive.url=postgresql://localhost:5432/test

我找不到这个特定堆栈的适当示例或指南,我遵循了以下方法:https://quarkus.io/guides/hibernate-orm-panache-kotlin有什么想法吗?

共有2个答案

吕自怡
2023-03-14

可以在implementation(实现)io中找到TransactionManager(事务管理器)实现。quarkus:quarkus narayana jta包。

您的DB URL需要如下所示:` quarkus。数据源。反应性。url=vertx反应:postgresql://...

另外,不要使用quarkus.hibernate-orm.database.generation=update配置,因为它需要JDBC

葛宏爽
2023-03-14

它需要Quarkus-Hibernate-orm-panache-kotlin依赖和quarkus.datasource.jdbc=false在application.properties

 类似资料:
  • 我在调用get请求(modes-calcul)时遇到这个错误,我不明白为什么...我的依赖注入是正确的吗? ModeCalculController: 谢谢你的帮助..

  • 问题内容: 我正在开发一个应用程序(Quartz调度程序),其中有一个作业类负责实际执行工作,我们需要在Quartz调度程序中创建触发器时告知/传递作业类的名称。 我想为所有想使用该API的人提供一个扩展点(除了我将作为API的一部分提供的一些通用作业之外)。这个想法是创建一个(标记)接口,如果有人想将其类声明为调度程序作业类,那么他们要做的就是(声明)实现该接口。 我不确定如何找到合约之后的类(

  • 问题内容: 目前我有这样的事情 main.go 还有我的工作包 和 我正在传递给NewJob的函数是在goroutine上每2秒执行一次,但是我想访问我传递的匿名结构…但是当我尝试访问时 编号 我越来越 t.Id未定义(类型interface {}是没有方法的接口) 但是打印t给我预期的结果 {1} 问题答案: 您必须先将其声明为兼容类型,然后才能访问其字段。

  • 这是我第一次尝试使用Spring MVC使用Spring Data JPA,但我无法解决这个错误。 UserRepository.java MainController.java AppConfig.java

  • 我一直在学习如何使用spring数据,并创建了一个非常简单的项目来测试它。文件夹结构和applicationcontext。xml显示在这里:applicationcontext。xml和文件夹结构我得到的错误显示在这里:控制台错误输出。我在类路径上有applicationContext,并声明了该类的bean,你知道我的问题是什么吗?非常感谢。 编辑:我已经更新了我的帖子,以显示主类和道类,以及

  • 我有一个可以从应用程序中启用/禁用的组件。我的spring boot应用程序中的属性。。 在我的应用程序中。我拥有的财产 在组件中看起来像这样 最后,在我使用wikiclient的另一个类中,我在我的构造函数中像这样自动安装了它。 但我还是有例外 如果启用该属性,它的工作方式与启用该组件类似。