Среда выполнения 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>

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

person George Turner    schedule 12.11.2019    source источник
comment
Привет, вы следовали этому руководству quarkus.io/guides/hibernate-orm, чтобы настроить Hibernate с Кваркус? Если да, можете ли вы предоставить нам свой pom.xml и application.properties?   -  person loicmathieu    schedule 12.11.2019
comment
Как говорит @loicmathieu, это должно сработать. Пожалуйста, предоставьте дополнительную информацию о своем коде, чтобы мы могли помочь   -  person geoand    schedule 13.11.2019
comment
Есть ли способ загрузить мой pom.xml вместо того, чтобы вставлять его в качестве комментария? Буквально код не отличается, но, может быть, мне не хватает какой-то зависимости?   -  person George Turner    schedule 13.11.2019
comment
Отредактируйте свой вопрос и добавьте в него pom.xml (достаточно части зависимости) и свои application.properties.   -  person loicmathieu    schedule 13.11.2019
comment
Я думаю, что столкнулся с этим, и я поместил @ApplicationScoped в класс, чтобы решить эту проблему ...   -  person Xendar    schedule 19.11.2019
comment
У меня есть @ApplicationScoped в классе со ссылкой на EM   -  person George Turner    schedule 20.11.2019


Ответы (2)


Я понял! Не совсем «интуитивно понятный», но я еще не перешел ни на один из классов Entity. Все, что потребовалось, - это добавить один класс в область видимости, и все заработало. Вот и все, что касается простого прототипирования. Возможно, он должен был предупредить, что «классы сущностей не найдены».

person George Turner    schedule 22.11.2019
comment
могу подтвердить, это сработало для меня! должен быть текущий принятый ответ. (с использованием Quarkus 1.2.1) - person salgmachine; 04.03.2020

Друг, у меня была такая же проблема. Вот что у меня сработало, надеюсь помочь вам:

добавлен в 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

Благодарность

person Marcos Rufino    schedule 19.12.2020