Hibernate + PostgreSQL aparentemente sequence não funciona [RESOLVIDO]

2 respostas
Thiago_Luis

Olá a todos.

Eu preciso resgatar uma lista de um determinado objeto e cada objeto desta lista precisa ser inserido no banco.
Porém, só o último registro é inserido.
Quando eu olho no banco, a sequence continua com o valor START em 1 e na minha tabela só o último registro da List é inserido.
Alguem pode me ajudar??

A minha classe Entity

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
 *
 * @author thiago.luis
 */
@Entity
@SequenceGenerator(name = "seq_oferta", sequenceName = "seq_tb_oferta_procedimento", allocationSize = 1, initialValue = 1)
@Table(name="tb_oferta_procedimento")
public class OfertaProcedimento implements Serializable{

    @Id
    @GeneratedValue(generator="seq_oferta")
    @Column(name="co_oferta_procedimento")
    private Integer id;
    
    @Column(name="co_sia_sih")
    private Integer codigo;

    @Column(name="co_unificado_procedimento")
    private String codigoUnificado;

    @Column(name="no_procedimento")
    private String procedimento;

    @Column(name="qt_cota")
    private int cota;

    @Column(name="qt_saldo")
    private int saldo;

    @Column(name="tp_oferta")
    private String tipo;

    @Column(name="qt_uso")
    private int uso;

O meu hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>

    <property name="hibernate.hbm2ddl.auto">create</property>
    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>

    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
    <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/db_consumo_webservice</property>
    <property name="hibernate.connection.username">usuario</property>
    <property name="hibernate.connection.password">senha</property>
    <property name="hibernate.show_sql">true</property>

    <mapping class="br.com.telemidia.modelo.OfertaProcedimento" />
  </session-factory>
</hibernate-configuration>

Grato

2 Respostas

jose.jesus
Tente usar isso:
@SequenceGenerator(name="seq_oferta",sequenceName="seq_oferta")
	
        @javax.persistence.GeneratedValue(generator="seq_oferta",strategy=GenerationType.AUTO)
Thiago_Luis

Puts, acabei de ver o meu erro.

Foi só trocar para update que funcionou, pois afinal, ele estava criando de 1 em 1 para cada objeto na lista, daí sobreescrevia o anterior…

Agora a sequence funciona certinho!

Criado 18 de janeiro de 2011
Ultima resposta 18 de jan. de 2011
Respostas 2
Participantes 2