首页 > 解决方案 > Quarkus 运行时不注入 EntityManager

问题描述

我已经尝试过@PersistenceContext,@PersistenceUnit@Inject组合,但没有任何效果。@Inject 使 maven-quarkus-plugin 构建失败:

[错误] 原因:javax.enterprise.inject.UnsatisfiedResolutionException:不满足类型 javax.persistence.EntityManager 和限定符的依赖项 [@Default]

我尝试过使用和不使用persistence.xml。我的数据源和 application.properties 工作正常,因为我可以注入一个 AgroalDataSource 并执行直接 JDBC,但我想移植我的 JPA 实体类并使用它们。

我的父模块 pom

<!-- versions set by quarkus-bom, but they don't pass in, when changing quarkus version, update this from quarkus bom -->
<properties>
    <quarkus.version>1.0.0.CR1</quarkus.version>

    <agroal.version>1.7</agroal.version>
    <jakarta.enterprise.cdi-api.version>2.0.2</jakarta.enterprise.cdi-api.version>
    <jboss-jaxrs-api_2.1_spec.version>2.0.1.Final</jboss-jaxrs-api_2.1_spec.version>
    <jboss-logging.version>3.3.2.Final</jboss-logging.version>
    <jboss-threads.version>3.0.0.Final</jboss-threads.version>
    <smallrye-config.version>1.3.9</smallrye-config.version>
    <wildfly-common.version>1.5.0.Final-format-001</wildfly-common.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-universe-bom</artifactId>
            <version>${quarkus.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

我的绒球

<dependencies>
    <dependency>
        <groupId>com.lmco.is3.cs</groupId>
        <artifactId>datatypes</artifactId>
        <exclusions>
            <exclusion>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
            </exclusion>
        </exclusions>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.lmco.is3.cs</groupId>
        <artifactId>utils</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.lmco.is3.nc</groupId>
        <artifactId>netcentric-if</artifactId>
        <version>1.0-SNAPSHOT</version>
        <exclusions>
            <exclusion>
                <groupId>io.undertow</groupId>
                <artifactId>undertow-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.jboss.spec.javax.websocket</groupId>
                <artifactId>jboss-websocket-api_1.1_spec</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>

    <dependency>
        <groupId>io.agroal</groupId>
        <artifactId>agroal-api</artifactId>
        <version>${agroal.version}</version>
    </dependency>
    <dependency>
        <groupId>io.agroal</groupId>
        <artifactId>agroal-narayana</artifactId>
        <version>${agroal.version}</version>
    </dependency>
    <dependency>
        <groupId>io.agroal</groupId>
        <artifactId>agroal-pool</artifactId>
        <version>${agroal.version}</version>
    </dependency>
    <dependency>
        <groupId>io.smallrye</groupId>
        <artifactId>smallrye-config</artifactId>
        <version>${smallrye-config.version}</version>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-agroal</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-artemis-jms</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-jdbc-postgresql</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-hibernate-orm</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-resteasy</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-resteasy-jsonb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>${jboss-logging.version}</version>
    </dependency>
    <dependency>
        <groupId>org.wildfly.common</groupId>
        <artifactId>wildfly-common</artifactId>
        <version>${wildfly-common.version}</version>
    </dependency>
    <dependency>
        <groupId>jakarta.enterprise</groupId>
        <artifactId>jakarta.enterprise.cdi-api</artifactId>
        <version>${jakarta.enterprise.cdi-api.version}</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.spec.javax.ws.rs</groupId>
        <artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
        <version>${jboss-jaxrs-api_2.1_spec.version}</version>
    </dependency>

应用程序属性

# Configures the Artemis properties.
quarkus.artemis.url=tcp://mq:61616?type=CF
quarkus.artemis.username=artemis
quarkus.artemis.password=simetraehcapa

quarkus.datasource.url=jdbc:postgresql://db:5432/stsdb
quarkus.datasource.driver=org.postgresql.Driver
quarkus.datasource.username=appuser
quarkus.datasource.password=appuser

quarkus.resteasy.gzip.enabled=true
quarkus.resteasy.gzip.max-input=10M

quarkus.log.category."com.lmco.is3.nc.micro.clock".level=INFO

标签: jpaentitymanagerquarkus

解决方案


我想到了!不是真正的“直观”,但我还没有迁移到任何实体类。所要做的就是把一个类放在范围内,一切都开始工作了。简单的原型设计就这么多。也许它应该警告“没有找到实体类”。


推荐阅读