2011-06-09 10 views
23

क्या कोई मुझे बता सकता है कि मुझे निम्न त्रुटि क्यों मिल रही है?हाइबरनेट: javax.naming.NoInitialContextException (एनोटेशन के माध्यम से घटक मैपिंग)

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 
    at javax.naming.spi.NamingManager.getInitialContext(Unknown Source) 
    at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source) 
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source) 
    at javax.naming.InitialContext.getNameParser(Unknown Source) 
    at org.hibernate.util.NamingHelper.bind(NamingHelper.java:75) 
    at org.hibernate.impl.SessionFactoryObjectFactory.addInstance(SessionFactoryObjectFactory.java:113) 
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:348) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341) 
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) 
    at com.transbinary.main.Client.main(Client.java:13) 

मैं वांछित परिणाम मिल रहा है और व्यक्ति तालिका में डेटा हो रही है, लेकिन मैं इस त्रुटि हो रही है कर रहा हूँ।

यहाँ कोड मैं उपयोग कर रहा हूँ के लिए है: Person.java

@Entity 
public class Person implements Serializable { 
    private Integer id; 
    private Address homeAddress; 

    @Id 
    @GeneratedValue 
    public Integer getId() { 
     return id; 
    } 
    public void setId(Integer id) { 
     this.id = id; 
    } 

    public Address getHomeAddress() { 
     return homeAddress; 
    } 
    public void setHomeAddress(Address homeAddress) { 
     this.homeAddress = homeAddress; 
    } 
} 

Address.java

@Embeddable 
public class Address implements Serializable { 
    private String city; 
    private String Country; 

    public Address() {} 
    public Address(String city, String country) { 
     super(); 
     this.city = city; 
     Country = country; 
    } 

    public String getCity() { 
     return city; 
    } 
    public void setCity(String city) { 
     this.city = city; 
    } 
    public String getCountry() { 
     return Country; 
    } 
    public void setCountry(String country) { 
     Country = country; 
    } 
} 

hibernate.cfg.xml

<hibernate-configuration> 
<session-factory name=""> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.password">password</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydb</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 

    <property name="hibernate.hbm2ddl.auto">create</property> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hibernate.format_sql">true</property> 

    <mapping class="com.transbinary.domain.Person"/> 

</session-factory> 
</hibernate-configuration> 

Client.java

public class Client { 
    public static void main(String[] args) {   
     SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 
     Session session = sessionFactory.openSession(); 
     Transaction txn = session.beginTransaction(); 

     Person person = new Person(); 
     Address homeAddress = new Address("Mumbai", "India"); 
     person.setHomeAddress(homeAddress); 

     session.save(person); 

     txn.commit(); 
     session.close();    
    } 
} 

किसी की मदद कर सके मुझे समझने कारण है कि मैं उस त्रुटि मिल रहा है?

धन्यवाद।

उत्तर

33

मैं इसे तथ्य यह है कि आप <session-factory> में name विशेषता निर्दिष्ट के कारण होती है लगता, इसलिए हाइबरनेट SessionFactory बाध्य करने के लिए उस नाम के तहत JNDI की कोशिश करता है, लेकिन JNDI अपने वातावरण में उपलब्ध नहीं है। तो, name विशेषता हटाएं।

6

बस नाम विशेषता भले ही आपके सत्र-कारखाने मानचित्रण से अपने खाली हटाने [hibernate.cfc.xml]

संबंधित मुद्दे