Olá a todos!
Estou estudando o Hibernate pelo tutorial que vem com ele. E estou com a versão 3.2.4.sp1, de 18 de maio de 2007.
Apenas gostaria compartilhar como vocês o seguinte:
Com o hibernate.cfg.xml tendo a propriedade
<property name="hbm2ddl.auto">create</property>
o Hibernate irá criar automaticamente as tabelas e etc.
Para utilizar campos do tipo auto incremento no Postgres deve usar a seguinte configuração no mapeamento da tabela (segundo o manual/tutorial que vem com o Hibernate)
<id name="id" type="long" column="person_id">
<generator class="sequence">
<param name="sequence">person_id_sequence</param>
</generator>
</id>
Como isso o Hibernate cria a "sequence" person_id_sequence no banco e cria o campo "person_id" como bigint
Eu viz uns testes e vi que para criar o campo person_id como SERIAL, deve mapear a tabela como se fosse para MySQL
<id name="id" type="long" column="person_id" unsaved-value="0">
<generator class="identity"/>
</id>
Então ele irá associar automaticamente o nextval('person_person_id_seq') ao campo "person_id".
Obs.: O Hibernate é show!!!
cleriston,
E a dúvida? Tem alguma, ou esse post é de “caráter informativo”?
é de carater informativo mesmo…
Fiquei tão feliz qdo descobri isso, e queria compartilhar com que tá aprendendo tb.
Abraços
Na versão mais recente do Hibernate você faz tudo isso via anotação.
http://www.guj.com.br/posts/list/39281.java
[quote=cleriston] Olá a todos!
Estou estudando o Hibernate pelo tutorial que vem com ele. E estou com a versão 3.2.4.sp1, de 18 de maio de 2007.
Apenas gostaria compartilhar como vocês o seguinte:
Com o hibernate.cfg.xml tendo a propriedade
<property name="hbm2ddl.auto">create</property>
o Hibernate irá criar automaticamente as tabelas e etc.
Para utilizar campos do tipo auto incremento no Postgres deve usar a seguinte configuração no mapeamento da tabela (segundo o manual/tutorial que vem com o Hibernate)
<id name="id" type="long" column="person_id">
<generator class="sequence">
<param name="sequence">person_id_sequence</param>
</generator>
</id>
Como isso o Hibernate cria a "sequence" person_id_sequence no banco e cria o campo "person_id" como bigint
Eu viz uns testes e vi que para criar o campo person_id como SERIAL, deve mapear a tabela como se fosse para MySQL
<id name="id" type="long" column="person_id" unsaved-value="0">
<generator class="identity"/>
</id>
Então ele irá associar automaticamente o nextval('person_person_id_seq') ao campo "person_id".
Obs.: O Hibernate é show!!![/quote]
Opa, sei que o tópico é um pouco antigo, mas me ajudou bastante recentemente, mas faltou um detalhe ai que me bati um pouco para fazer a dica do camarada acima funcionar de fato:
-Mudar o dialeto para postgresql
Espero que ninguém se chateie por trazer um topico tão velho a tona :oops: