jpa - Quarkus 依赖注入(inject) JPA 实体管理器的问题

标签 jpa cdi quarkus

构建问题

Caused by: io.quarkus.builder.BuildException: 
Build failure: Build failed due to errors
    [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: Found 2 deployment problems: 
[1] Unsatisfied dependency for type javax.persistence.EntityManager and qualifiers [@DataSource(value = "ergoint")]
    - java member: com.int.dao.EPersistence#entityManagerE
    - declared on CLASS bean [types=[java.lang.Object, com.int.dao.EPersistence], qualifiers=[@Default, @Any], target=com.int.dao.EPersistence]
[2] Unsatisfied dependency for type javax.persistence.EntityManager and qualifiers [@DataSource(value = "madata")]
    - java member: com.int.dao.MPersistence#entityManagerM
    - declared on CLASS bean [types=[com.int.dao.MasterDataPersistence, java.lang.Object], qualifiers=[@Default, @Any], target=com.int.dao.MPersistence]
    at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:873)

代码:

@ApplicationScoped
public class MPersistence {

    @Inject
    @DataSource("madata")
    private EntityManager entityManagerMaster;

属性文件:

quarkus.datasource.driver=oracle.jdbc.driver.OracleDriver
quarkus.hibernate-orm.dialect=oracle.jdbc.driver.OracleDriver

quarkus.datasource.madata.url=jdbc:oracle:thin:@myhost:1521:orcl
quarkus.datasource.madata.driver=oracle.jdbc.driver.OracleDriver
quarkus.datasource.madata.username=quarkus_test
quarkus.datasource.madata.password=quarkus_test

只需从 eclipse ide 运行“maven clean install”并在运行测试用例时遇到此问题。

(之前我认为这两个类可以通过 EJB 中的 @Stateless 读取,但是当我将 quarkus 更新到 1.1.0 Final 时,它删除了所有 EJB 依赖项。所以我将应用程序范围置于应用程序范围内)

最佳答案

更新:从 Quarkus 1.8 开始,我们支持直接在 application.properties 中设置多个持久化单元。请参阅https://quarkus.io/guides/hibernate-orm#multiple-persistence-units了解更多信息。

我们尚不支持在 application.properties 中配置多个持久性单元。 因此,您尝试注入(inject)的 EntityManager 不是由 Quarkus 创建的。

您可以跟踪此问题 https://github.com/quarkusio/quarkus/issues/2835了解我们在该主题上的进展。

关于jpa - Quarkus 依赖注入(inject) JPA 实体管理器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59578309/

相关文章:

java - JPA并发事务策略

java - Hibernate:覆盖子类中的字段可选性

jakarta-ee - 使用 CDI 注入(inject)非托管类?

quarkus - 使用 kotlin + quarkus 注入(inject)某些依赖项时出错

java - 在 Quarkus 中重定向到 https

java - 当用户身份验证未经授权时发送自定义响应

java - 为 Jinq 创建查询时是否可以使用 Predicate<T> ?

java - 如何告诉 Glassfish 中的 JSF 2.0 将 CDI @Alternative 实例化为 <managed-bean>?

jsf - 识别和解决javax.el.PropertyNotFoundException:目标不可访问

java - 为什么 hibernate JPA 生成选择而不是插入?