类型EntityManagerFactory的模棱两可的依赖关系

时间:2019-09-06 07:27:59

标签: hibernate wildfly cdi jbpm jboss-weld

我正在从WF 7.4.0.FINAL迁移到16.0.0.FINAL。解决了不同模块的升级问题之后,我面临以下问题:WELD 歧义依赖异常。如何保持与两个数据库的连接?

似乎SessionFactory的hibernate-core-5.3.9现在是从EntityManagerFactory扩展的,而EntityManagerFactory却没有为hibernate-core-4.2.14(WF7.4)扩展。 SessionFactory在HibernateProducer中定义,并且一个单独的实例注入到EnvironmentProducer中(专门用于jbpm)。似乎这两个相互干扰,而Wildfly 7.4中却没有。

它连接到2个数据库:一个jbpm和一个特定于应用程序的数据库。 两者都定义了persistence.xml。

ON
OFF
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;
import javax.persistence.PersistenceUnit;

public class HibernateProducer {


    @Produces
    @ApplicationScoped
    public SessionFactory getSessionFactory() {
        Configuration configuration = new Configuration();
        configuration.configure();

        return configuration.buildSessionFactory();
    }

    public void closeSessionFactory(@Disposes SessionFactory sessionFactory) {
        sessionFactory.close();
    }
}

2 个答案:

答案 0 :(得分:0)

一个简单的解决方法是将@Typed(SessionFactory.class)放在您的firebase.database()方法上。

答案 1 :(得分:0)

如果您尝试使用两个不同的EntityManagerFactories,请使用限定符来区分。