Java - Mapear datos de tipo serial Hibernate 5.3.6

 
Vista:

Mapear datos de tipo serial Hibernate 5.3.6

Publicado por Alfredo (1 intervención) el 01/10/2018 16:36:55
Saludos:
Hace poco empece a trabajar con hibernate en java.. Estoy trabajando con la versión 5.3.6 del ORM y al insertar un nuevo registro en la base de datos no me auto incrementa el id. La entidad en la Base de datos contiene un Id de tipo serial.. el cual se debe auto incrementar una vez que se agregue un nuevo registro...
Esta base de datos esta vinculado a un servicio web para trabajar con Angular y usando esta aplicación trabaja perfectamente, por lo cual no hay problema en el servidor de base de datos. Les explico el código a ver si pueden decirme que me falta.
Modelo:
1
2
3
4
5
6
public class EntityObraEntity {
    @Id
    @Column(name = "id")
//he provado todas las formas de generación y nada
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private int id;
Mapeo XML de la entidad:
1
2
3
4
//esto es lo que genero Hibernate de manera automatica
<id name="id">
     <column name="id" sql-type="int"/>
</id>

Configuración Hibernate:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<hibernate-configuration>
    <session-factory>
        <property name="connection.url">jdbc:postgresql://localhost:5432/test</property>
        <property name="connection.driver_class">org.postgresql.Driver</property>
        <property name="connection.username">admin</property>
        <property name="connection.password">admin</property>
        <property name="dialect">org.hibernate.dialect.PostgreSQL9Dialect</property>
        <mapping resource="models/EntityObraEntity.hbm.xml"/>
        <mapping class="models.EntityObraEntity"/>
        <mapping resource="models/EntityProveedorEntity.hbm.xml"/>
        <mapping class="models.EntityProveedorEntity"/>
        <!-- <property name="connection.username"/> -->
        <!-- <property name="connection.password"/> -->
 
        <!-- DB schema will be updated if needed -->
        <!-- <property name="hbm2ddl.auto">update</property> -->
    </session-factory>
</hibernate-configuration>
Método add del controlador:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public Integer addObra(EntityObraEntity obraEntity) {
    try {
        sf = new Configuration().configure().buildSessionFactory();
    } catch (Throwable ex) {
        System.err.println("Failed to create sessionFactory object." + ex);
        throw new ExceptionInInitializerError(ex);
    }
    Session session = sf.openSession();
    Transaction tx = null;
    Integer ObraID = null;
 
    try {
        tx = session.beginTransaction();
        ObraID = (Integer) session.save(obraEntity);
        tx.commit();
    } catch (HibernateException he) {
        if (tx != null) tx.rollback();
        he.printStackTrace();
    } finally {
        session.close();
    }
    return ObraID;
}
Versión de gestror PostgreSQL 9.0.4
versión del JDK == 10.2

Espero me puedan ayudar...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder