2015-01-02 40 views
1
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; 
} 
} 

这是我在这个论坛上发现,提供这个会话工厂 的类,但我不断收到JndiException: Error parsing JNDI name []我该如何修复Hibernate上的JndiException?

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

javax.naming.NoInitialContextException:需要环境或系统属性指定的类名,或者作为小程序参数或应用程序资源文件中:java.naming.factory.initial at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:640) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext .java:243) at javax.naming.InitialContext.getURLOrDe faultInitCtx(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)

回答

0

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

<session-factory name=""> 

到:

<session-factory> 

这对于问题的快速修复。 name属性只需要将SessionFactory绑定到JNDI。