我正在从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();
}
}
答案 0 :(得分:0)
一个简单的解决方法是将@Typed(SessionFactory.class)
放在您的firebase.database()
方法上。
答案 1 :(得分:0)
如果您尝试使用两个不同的EntityManagerFactories,请使用限定符来区分。