2011-11-08 19 views
5

Estoy utilizando JPA 2 en un proyecto JSF 2, entonces configuro mi fuente de datos en GlassFish v3, todo está bien, pero si trato de probar las consultas JPA en Hibernate Tools, me da mí el error siga:JPA: No se pudo ubicar TransactionManager

Sessionfactory error:Could not locate TransactionManager 

Aquí es mi persistence.xml:

<?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="SuaParte" transaction-type="JTA"> 
     <jta-data-source>jdbc/suaparte_ds</jta-data-source> 
     <class>entity.Area</class> 
     <properties> 
      <property name="eclipselink.logging.level" value="FINE"/> 
      <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/> 
     </properties> 


    </persistence-unit> 
</persistence> 

estoy usando EclipseLink 2,3 (Indigo) y JPA 2 en mi proyecto Eclipse JSF 2.

EDITAR seguir el enfoque @fonini, mis hibernate.properties:

hibernate.connection.username=<filled> 
hibernate.connection.password=<filled> 
hibernate.connection.driver_class=com.mysql.jdbc.Driver 
hibernate.dialect=org.hibernate.dialect.MySQLDialect 
hibernate.connection.url=<filled> 
hibernate.connection.provider_class=org.hibernate.connection.DriverManagerConnectionProvider 
hibernate.datasource=jdbc/suaparte_ds 
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup 

Pero ahora me da otro error: error

qué he tenido que cambiar el id generator en mis entidades?

@Entity 
    @Table(name="product") 
    public class Product implements Serializable { 
     private static final long serialVersionUID = 1L; 

     @Id 
     @GeneratedValue(strategy=GenerationType.SEQUENCE) 
     private Integer id; 

     @Size(max=150, message="150 caracteres no máximo") 
     private String description; 

     // getters and setter 
} 
+0

Si implementa el proyecto a un servidor Glassfish, funciona? – fonini

+0

lo hace @fonini, solo para probar las consultas JPQL y descubrí que Hibernate Tools es capaz de hacerlo. –

+0

MySQL no tiene secuencias, funciona con autoincremento. Debe cambiar GenerationType.SEQUENCE a GenerationType.IDENTITY – fonini

Respuesta

0

Dado que Hibernate Tools se ejecuta dentro de Eclipse, no tiene acceso a las fuentes de datos específicas del servidor de aplicaciones.

Puede usar un archivo de propiedades para configurar la conexión que anulará la fuente de datos.

Aquí hay un ejemplo de archivo:

hibernate.connection.username=user 
hibernate.connection.password=pass 
hibernate.connection.driver_class=org.PostgreSQL.Driver 
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect 
hibernate.connection.url=jdbc:postgresql... 

hibernate.connection.provider_class=org.hibernate.connection.DriverManagerConnectionProvider 
hibernate.datasource= 
hibernate.transaction.manager_lookup_class= 
+0

¿Cómo quedaría si estuviera en MySQL? Estoy usando MySQL, lo siento, no mencioné antes =) –

+0

Pude configurar mi hibernate.properties, actualicé mi publicación. –

+1

Dialecto: org.hibernate.dialect.MySQLDialect. Si está utilizando InnoDB (org.hibernate.dialect.MySQLInnoDBDialect), si está utilizando MyISAM (org.hibernate.dialect.MySQLMyISAMDialect). Clase de controlador: com.mysql.jdbc.Driver. URL: jdbc: mysql: // localhost/your_db. ¡Espero que esto ayude! – fonini

Cuestiones relacionadas