【发布时间】:2020-04-22 00:03:04
【问题描述】:
构建问题
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 依赖项。所以我将应用程序范围设置为)
【问题讨论】:
-
那么如果你使用eclipselink而不是hibernate它可以工作吗? (entitymanager 接口是 JPA,不是 Hibernate)
-
quarkus.hibernate-orm.dialect=oracle.jdbc.driver.OracleDriver 错误,这一定是 quarkus.hibernate-orm.dialect=org.hibernate.dialect.Oracle12cDialect 但如果这是我的问题不知道
-
我不是 quarkus 用户,但由于错误中描述的
[types=[com.int.dao.MasterDataPersistence, java.lang.Object]方式,看起来有多个 bean 可用于注入。 Weld 会明确说明,也许 Quarkus 不会。可能是一个用于生产,一个用于测试。