Quarkus运行时不注入EntityManager

时间:2019-11-12 08:43:21

标签: jpa entitymanager quarkus

我尝试了@PersistenceContext@PersistenceUnit@Inject的组合,但是没有任何效果。 @Inject无法通过Maven-quarkus-plugin构建:

  

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

我尝试了是否使用persistence.xml。 我的数据源和application.properties可以正常工作,因为我可以注入AgroalDataSource并直接进行JDBC,但是我想移植到我的JPA Entity类上并使用它们。

我的父模块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>

我的pom

<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>

application.properties

# 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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

朋友,我遇到了同样的问题。以下是我所做的对我有用的事情,希望对您有所帮助:

添加到 application.properties quarkus.hibernate-orm."db".packages = 带有实体的包 例子:

quarkus.hibernate-orm."db".packages=br.com.application.base.models

在我的存储库中:

@ApplicationScoped
@ActivateRequestContext
public class HeaderRepository {

    @PersistenceUnit("db")
     EntityManager entityManager;

希望能帮到你 以下文档:https://quarkus.io/guides/hibernate-orm

谢谢