Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/05/2013, 12:00
desertmark
 
Fecha de Ingreso: abril-2013
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Java Hibernate Error java.lang.reflect.InvocationTargetException

Hola gente, and tratando de aprender algo de hibernate. Estube tratando de Persistir una clase de java en una base de datos postgresql. Bien el tema es que me esta tirando una excepcion, java.lang.reflect.InvocationTargetException para ser mas especifico. Lo raro es que a pesar de la excepcion se conecta a la base de datos crea la tabla correspondiente a la clase que quiero persistir, pero lo q no hace es intertar la fila correspondiente al objeto que quiero persistir en la tabla.

Debo aclara que estoy realizando la persistencia con el estandar de java EntityManager y no Session el estandar de hibernate. Debo usar el de java porque es lo que me piden en la facultad.

les adjunto el codigo que utilizo.
Basicamente son 2 clases y 1 xml. una es la clase PasajeroBis que es la que quiero persistir, la otra es un pequeño main o test como quieran decirle con el punto de entrada que es la que instancia PasajeroBis y persiste la clase. El xml es el persistence.xml que utiliza entitymanagerFactory para crear el entitymanager adecuado a mi situacion(en este caso una base de datos postgre, con las cofig hibernate requeridas, etc)


Clase a persistir PasajeroBis.
Código JAVA:
Ver original
  1. package Usuarios;
  2. import java.io.Serializable;
  3. import javax.persistence.*;
  4.  
  5.  
  6. public class pasajeroBis implements Serializable {
  7.     @Id
  8.    
  9.     private int id;
  10.     private float saldo;
  11.  
  12.  
  13.     public int getId() {
  14.         return id;
  15.     }
  16.  
  17.     public void setId(int id) {
  18.         this.id = id;
  19.     }
  20.  
  21.     public float getSaldo() {
  22.         return saldo;
  23.     }
  24.  
  25.    
  26.     public void setSaldo(float saldo) {
  27.         this.saldo = saldo;
  28.     }
  29.    
  30. }


Clase Test con el punto de entrada Main:
Código JAVA:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package hibernateproj;
  6.  
  7. import Usuarios.pasajeroBis;
  8.  
  9. import javax.persistence.EntityManager;
  10. import javax.persistence.EntityManagerFactory;
  11. import javax.persistence.*;
  12.  
  13. /**
  14.  *
  15.  * @author Fer500
  16.  */
  17. public class HibernateProj {
  18.  
  19.     /**
  20.      * @param args the command line arguments
  21.      */
  22.     public static void main(String[] args) {
  23.        EntityManagerFactory emf = Persistence.createEntityManagerFactory("HibernateProjPU");
  24.        EntityManager em = emf.createEntityManager();
  25.        
  26.        pasajeroBis pasajero = new pasajeroBis();
  27.        pasajero.setSaldo(10);
  28.        pasajero.setId(1);
  29.        
  30.  
  31.        em.persist(pasajero);
  32.     }
  33. }


y el xml de configuracion:
Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3.   <persistence-unit name="HibernateProjPU" transaction-type="RESOURCE_LOCAL">
  4.     <provider>org.hibernate.ejb.HibernatePersistence</provider>
  5.    
  6.     <properties>
  7.       <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/clienteServidor"/>
  8.       <property name="javax.persistence.jdbc.password" value="miPassword"/>
  9.       <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
  10.       <property name="javax.persistence.jdbc.user" value="postgres"/>
  11.    
  12.       <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
  13.       <property name="dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
  14.       <property name="hibernate.hbm2ddl.auto" value="create"/>
  15.       <property name="showSql" value="true"/>
  16.     </properties>
  17.   </persistence-unit>
  18. </persistence>





esto es lo que me devuelve la consola:
run:
may 11, 2013 2:49:36 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
may 11, 2013 2:49:36 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.1.12.Final}
may 11, 2013 2:49:36 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
may 11, 2013 2:49:36 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
may 11, 2013 2:49:36 PM org.hibernate.service.jdbc.connections.internal.Dr iverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
may 11, 2013 2:49:36 PM org.hibernate.service.jdbc.connections.internal.Dr iverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20
may 11, 2013 2:49:36 PM org.hibernate.service.jdbc.connections.internal.Dr iverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: true
may 11, 2013 2:49:36 PM org.hibernate.service.jdbc.connections.internal.Dr iverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [org.postgresql.Driver] at URL [jdbc:postgresql://localhost:5432/clienteServidor]
may 11, 2013 2:49:36 PM org.hibernate.service.jdbc.connections.internal.Dr iverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=postgres, password=****, autocommit=true, release_mode=auto}
may 11, 2013 2:49:37 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL82Dialect
may 11, 2013 2:49:37 PM org.hibernate.engine.jdbc.internal.LobCreatorBuild er useContextualLobCreation
INFO: HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
may 11, 2013 2:49:37 PM org.hibernate.engine.transaction.internal.Transact ionFactoryInitiator initiateService
INFO: HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.Jdb cTransactionFactory
may 11, 2013 2:49:37 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorF actory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
may 11, 2013 2:49:37 PM org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000227: Running hbm2ddl schema export
may 11, 2013 2:49:37 PM org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000230: Schema export complete
BUILD SUCCESSFUL (total time: 1 second)


P/D: REPITO: antes de ejecutar el programa solo existe la base de datos vacia sin la tabla pasajeroBis, luego de ejecutar, se crea la tabla pero no inserta la fila correspondiente al objeto pasado al metodo persist().
otra cosa estoy usando hibernate4 y el driver de postgre tmb es el ultimo.


Si alguno tiene idea a que corresonde esta excepcion le estaria muy agradecido. ya eh probado hacerlo con eclipseLink y no eh tenido ningun problema. nose cual es el problema de hibernate :S