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
package Usuarios; import java.io.Serializable; import javax.persistence.*; @Id private int id; private float saldo; public int getId() { return id; } public void setId(int id) { this.id = id; } public float getSaldo() { return saldo; } public void setSaldo(float saldo) { this.saldo = saldo; } }
Clase Test con el punto de entrada Main:
Código JAVA:
Ver original
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package hibernateproj; import Usuarios.pasajeroBis; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.*; /** * * @author Fer500 */ public class HibernateProj { /** * @param args the command line arguments */ EntityManagerFactory emf = Persistence.createEntityManagerFactory("HibernateProjPU"); EntityManager em = emf.createEntityManager(); pasajeroBis pasajero = new pasajeroBis(); pasajero.setSaldo(10); pasajero.setId(1); em.persist(pasajero); } }
y el xml de configuracion:
Código XML:
Ver original
<?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="HibernateProjPU" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/clienteServidor"/> <property name="javax.persistence.jdbc.password" value="miPassword"/> <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/> <property name="javax.persistence.jdbc.user" value="postgres"/> <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/> <property name="dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> <property name="hibernate.hbm2ddl.auto" value="create"/> <property name="showSql" value="true"/> </properties> </persistence-unit> </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