简体   繁体   中英

Using primary key from a sequence on hibernate

How can a use primary key in hibernate from a Postgres sequence? I need the primary be autogenerated, and them how i can get the sequence value for use in Hibernate

this is my code

Mapped class

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;

@Entity
@Table(name="ensaio")
public class Ensaio implements Serializable {

  @Id
  @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="ensaio_seq")
  @SequenceGenerator(name="ensaio_seq", sequenceName="ensaio_seq")
  @Column(name="ensaio_id")
  private long id;
  private String nome;
  @Column(nullable=false)
  private String modelo;
  private String site;
  @Temporal(javax.persistence.TemporalType.DATE)
  private Date datadoensaio;
  private int qtdeFotos;
  private String fotografo;

  getter and setters...
}

My DAO:

import java.util.List;
import model.Ensaio;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import util.hibernate.HibernateUtil;

public class HEnsaioDAO {

  private Session session;
  private SessionFactory sessionFactory = HibernateUtil.getSessionFactory();

  public HEnsaioDAO() {
    session = sessionFactory.openSession();
  }

  public List<Ensaio> findAll(){
    Query query = session.createQuery("from Ensaio");
    return query.list();
  }

  public void insertEnsaio(Ensaio ensaio){
    session.save(ensaio);
  }

  //testing insertion
  public static void main(String[] args) {
    Ensaio e = new Ensaio();
    e.setModelo("Roberta Maria");
    e.setSite("dsestudio");
    e.setFotografo("Jose Sobrero");
    e.setNome("Dama das camelias");

    HEnsaioDAO dao = new HEnsaioDAO();

    dao.insertEnsaio(e);


    List<Ensaio> list = dao.findAll();
    for (Ensaio ensaio : list) {
      System.out.println(ensaio.getModelo());
      System.out.println(ensaio.getNome());
      System.out.println(ensaio.getFotografo());
    }
  }

}

Nothing happens in database (Postgres 8.3). What wrong? Thanks

You define a generator of type sequence for your id.

Hibernate will handle the id assignation for you.

More info on ids and generators can be found here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM