Hibernate代码在获取sessionfactory对象时出现异常

Hibernate代码在获取sessionfactory对象时出现异常,hibernate,Hibernate,这是我的密码。在线 private static SessionFactory factory; public static void main(String[] args) { try{ factory = new Configuration().configure().buildSessionFactory(); }catch (Throwable ex) { System.err.println(

这是我的密码。在线

private static SessionFactory factory; 

    public static void main(String[] args) {
        try{
            factory = new Configuration().configure().buildSessionFactory();
        }catch (Throwable ex) { 
            System.err.println("Failed to create sessionFactory object." + ex);
            throw new ExceptionInInitializerError(ex); 
        }
      ManageEmployee ME = new ManageEmployee();
其抛出方式为错误:

factory = new Configuration().configure().buildSessionFactory();
这是根据谷歌建议的新代码


有人能帮我吗?我完全不熟悉Hibernate。

这不是配置代码问题。这段代码应该运行良好

factory=newconfiguration().configure().buildSessionFactory()

此类
org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl

它用于与缓存集成,驻留在相应版本的
hibernate infinispan xxx.jar

您需要从添加jar到类路径

或者您可以从Hibernate配置中删除infinispan缓存配置,例如从
Hibernate.cfg.xml
中删除

更新

new Configuration().configure().buildSessionFactory()
code不推荐用于Hibernate 4。Hibernate 5并不反对使用它。有趣的是,在修复该错误后,配置代码的第二个变体将无法工作:

错误的原因

org.hibernate.boot.registry.selector.StrategyRegistrationProvider:Provider org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl未找到

无法加载类
org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl

您可以通过在配置代码之前添加此代码来检查此类

public static void main(String[] args) {

    try{
        Configuration configuration = new Configuration().configure();
        configuration.configure("hibernate.cfg.xml");
        StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
        ServiceRegistry serviceRegistry = ssrb.build();
        setFactory(configuration.buildSessionFactory(serviceRegistry));
    }catch (Throwable ex) { 
        System.err.println("Failed to create sessionFactory object." + ex);
        throw new ExceptionInInitializerError(ex); 
    }

您有一个带有
main()
方法的控制台应用程序,在
WEB-INF/lib
中有一个jar,这很奇怪

我的hibernate版本是5.1.0。我已经看到了许多关于代码工厂=新配置()的答案;这已被弃用,我提到的新行现在正在使用。我在WEB-INF下的lib文件夹中已经有了这个jar。@PrithiviRaj您需要在类路径中有
org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl
类。或者您需要找到一些东西,添加
infinispan
缓存并将其删除。
public static void main(String[] args) {

    try{
        Configuration configuration = new Configuration().configure();
        configuration.configure("hibernate.cfg.xml");
        StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
        ServiceRegistry serviceRegistry = ssrb.build();
        setFactory(configuration.buildSessionFactory(serviceRegistry));
    }catch (Throwable ex) { 
        System.err.println("Failed to create sessionFactory object." + ex);
        throw new ExceptionInInitializerError(ex); 
    }
 URL url = Thread.currentThread().getContextClassLoader()
    .getResource(
    "org/hibernate/cache/infinispan/StrategyRegistrationProviderImpl.class");
System.out.println(url);