usadas tablas provienen persistencia para paquete mapear las ejemplo con anotaciones hibernate annotations

tablas - persistencia hibernate



Hibernate: javax.naming.NoInitialContextException(asignación de componentes a través de anotaciones) (2)

Simplemente elimine el atributo de nombre, incluso si está vacío de su asignación de sesión de fábrica [hibernate.cfc.xml]

¿Podría alguien decirme por qué estoy recibiendo el siguiente error?

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)

Obtengo el resultado deseado y la tabla de personas se rellena con los datos, pero obtengo este error.

Aquí está el código para que estoy usando: 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; } }

Dirección.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(); } }

¿Podría alguien ayudarme a entender por qué estoy recibiendo ese error?

Gracias.


Supongo que esto se debe al hecho de que especificó el atributo de name en <session-factory> , por lo que Hibernate intenta vincular SessionFactory a JNDI con ese nombre, pero JNDI no está disponible en su entorno. Por lo tanto, eliminar el atributo de name .