2010-09-20 24 views
8

Estoy intentando cambiar el código JDBC de mi aplicación web a JPA usando Hibernate como proveedor. Estoy usando Eclipse IDE. En eso he definido una fuente de datos MySQL. Lo agregué en persistence.xml. Pero recibo el siguiente error.¿Cómo se define un origen de datos no JTA para JPA-Hibernate? org.hibernate.connection.DatasourceConnectionProvider - No se pudo encontrar el origen de datos:

6640 [[email protected]] ERROR org.hibernate.connection.DatasourceConnectionProvider - Could not find datasource: tamSql 
javax.naming.NameNotFoundException; remaining name 'tamSql' 

Mi persistence.xml parece,

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
<persistence-unit name="ExpensePersistentUnit" transaction-type="RESOURCE_LOCAL"> 
<provider>org.hibernate.ejb.HibernatePersistence</provider> 
<non-jta-data-source>tamSql</non-jta-data-source> 
    <class>com.pricar.JPAInteg.Role</class> 
    <class>com.pricar.JPAInteg.User</class> 
    <class>com.pricar.JPAInteg.Userdetail</class> 
    <class>com.pricar.JPAInteg.Category</class> 
    <class>com.pricar.JPAInteg.Expens</class> 
    <class>com.pricar.JPAInteg.Leavetable</class> 
    <class>com.pricar.JPAInteg.Permissiontoken</class> 
    <class>com.pricar.JPAInteg.Roletokenassociation</class> 
    <class>com.pricar.JPAInteg.UserPK</class> 
<properties> 
    <property name="hibernate.connection.url" value="jdbc:mysql://localhost/officemgmt"/> 
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"></property> 
    <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
    <property name="hibernate.connection.password" value="1234"/> 
    <property name="hibernate.connection.username" value="root"/> 
    <property name="hibernate.hbm2ddl.auto" value="update"/> 
    <property name="hibernate.show_sql" value="true"/> 

</properties> 

Alguna sugerencia !!! ¡Gracias de antemano!

+0

Puede publicar el código de cómo ha declarado el nombre JNDI. –

+0

@Jaydeep: ¿Puede decirme qué es el nombre JNDI y dónde tengo que declararlo? Soy muy nuevo en JPA & Hibernate. Gracias –

Respuesta

24

No necesita <non-jta-data-source> cuando su fuente de datos está configurada en <properties>. <non-jta-data-source> es necesario cuando el origen de datos se configura en la configuración del servidor de aplicaciones y se obtiene a través de JNDI.

+1

Ya, tienes razón. Gracias por su respuesta. De hecho, señorita entendía la especificación JPA/Hibernate. Agradecería que me diga que "debo usar el tipo de transacción scope =" RESOURCE_LOCAL ". Por eso solo agregué, . –

+4

Diferentes tipos de transacciones y' '/' 'tiene sentido solo cuando se utiliza un servidor de aplicaciones completo (JBoss, WebSphere, WebLogic, etc.). Si tiene una aplicación independiente o un contenedor de servlets (Tomcat, Jetty) , simplemente escriba 'transaction-type =" RESOURCE_LOCAL "'. – axtavt

+0

¿Hay alguna manera de configurar en eclipse o Windows Machine, para que no necesite usar múltiples unidades de persistencia para servidor local –

Cuestiones relacionadas