如何在休眠时修复 JndiException?

How can I fix JndiException on hibernate?

public class HibernateUtil {
private static SessionFactory sessionFactory = createSessionFactory();
private static ServiceRegistry serviceRegistry;

public static SessionFactory createSessionFactory() {
    Configuration configuration = new Configuration();
    configuration.configure();
    serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
            configuration.getProperties()).build();
    sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    return sessionFactory;
}

public static SessionFactory getSessionFactory() {
    return sessionFactory;
}
}

这是我在本论坛找到的class提供的session factory 但我一直收到 JndiException: Error parsing JNDI name []

16:07:57,659 WARN SessionFactoryObjectFactory:98 - Could not bind factory to JNDI

javax.naming.NoInitialContextException:需要在环境或系统属性中指定class名称,或作为小程序参数,或在应用程序资源文件中:java.naming.factory.initial 在 javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:640) 在 javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243) 在 javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:280) 在 javax.naming.InitialContext.getNameParser(InitialContext.java:429) 在 org.hibernate.util.NamingHelper.bind(NamingHelper.java:52) 在 org.hibernate.impl.SessionFactoryObjectFactory.addInstance(SessionFactoryObjectFactory.java:90) 在 org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:293) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1145) 在 util.HibernateUtil.(HibernateUtil.java:13)

HibernateUtil 不是问题所在。您应该查看您的配置文件。cfg.xml 并删除会话工厂标签上的名称。

<session-factory name=""> 

至:

<session-factory>

这是解决该问题的快速方法。只有将 SessionFactory 绑定到 JNDI 才需要名称属性。