2011-06-09 18 views
23

Birisi bana aşağıdaki hatayı neden aldığımı söyleyebilir mi?Hazırda bekletme: javax.naming.NoInitialContextException (Açıklamalar aracılığıyla Bileşen Eşlemesi)

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) 

Ben istenen sonucu alma ve verilerle doldurulur kişi tablo alma ama bu hata alıyorum ediyorum. 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> 
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; 
    } 
} 

: Burada

kullanıyorum kodudur

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();    
    } 
} 

biri bana neden bunu hata alıyorum anlamaya yardımcı olabilir mi?

Teşekkürler.

cevap

33

Bu yüzden hazırda bu adla jndi için SessionFactory bağlamaya çalışır ancak JNDI ortamınızda mevcut değildir, bu <session-factory> yılında name niteliği belirtilen gerçeği nedeniyle sanırım. Yani, name özniteliğini kaldırın.

6

Sadece oturum fabrika haritalama gelen bile onun boş adı özelliğini kaldırmak [hibernate.cfc.xml]

İlgili konular