Hibernate + annotation + postgree + sequence?

10 respostas
aorocha

pessoal estou usando o hibernate com anotações no postgree 8.1, la tenho uma tabela usuario com o campo id do tipo long que usar uma sequence para auto inclrementa de 1 em 1, mas o hibernate não esta fazendo isto, ele não gera um id automativo, como comfiguro ele?

10 Respostas

L

Sua annotation está assim:

bland

aorocha,

Você pode estar utilizando uma sequence criada no próprio PostgreSQL.
Sabendo o nome da sequence a ser utilizada, você pode estar adicionando tag generator dentro da sua tag id, como mostra o exemplo.

<id column="id" name="identificador"> //1 <generator class="sequence"> //2 <param name="sequence">seq_modulo</param> //3 </generator> </id>
Na linha 1 temos no campo column o valor correspondente a coluna da tabela especificada aonde se deseja sincronizar o que consta no campo name. Ou seja, o que existir na coluna id será atribuído ao atributo identificador.
Na linha 2 temos a declaração de que esse identificador é do tipo “sequence”.
Na linha 3 temos o parâmetro de nome sequence e o nome da sequence que fornecerá o próximo valor para o identificador.

Espero ter ajudado. Abraço!

aorocha

estou tendo este erroorg.hibernate.AnnotationException: Unknown Id.generator: auto_usuariorequisicao at org.hibernate.cfg.AnnotationBinder.bindId(AnnotationBinder.java:1723) at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1170) at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:699) at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:353) at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:265) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1205) at ApplicationManager.init(ApplicationManager.java:39) at org.mentawai.core.Controller.initApplicationManager(Controller.java:152) at org.mentawai.core.Controller.init(Controller.java:100) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3917) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4201) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardHost.start(StandardHost.java:718) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442) at org.apache.catalina.core.StandardService.start(StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java:709) at org.apache.catalina.startup.Catalina.start(Catalina.java:551) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432) ERROR [/requisicao]: Servlet /requisicao threw load() exception [13:32:18.156] org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3919) javax.servlet.ServletException: Error loading application manager: ApplicationManager at org.mentawai.core.Controller.initApplicationManager(Controller.java:169) at org.mentawai.core.Controller.init(Controller.java:100) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3917) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4201) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardHost.start(StandardHost.java:718) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442) at org.apache.catalina.core.StandardService.start(StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java:709) at org.apache.catalina.startup.Catalina.start(Catalina.java:551) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)

tinha feito o que o lap_junior, sitou mas da esse erro.

aorocha

alguem pode me ajudar?

edvaldo.santiago

Gelera a minha classe está com a anotação de id com sequence… mesmo assim não funciona a parada…
Alguém pode me ajudar.
estou usando bd postgre

Valeu :frowning:

<blockquote>Exception in thread “main” java.lang.ExceptionInInitializerError

at carro.regra.testes.TesteHibernate.teste(TesteHibernate.java:24)

at carro.regra.testes.TesteHibernate.main(TesteHibernate.java:20)

Caused by: org.hibernate.AnnotationException: Unknown Id.generator: seq_casa

at org.hibernate.cfg.AnnotationBinder.bindId(AnnotationBinder.java:1595)

at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1065)

at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:629)

at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:276)

at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:210)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1156)

at carro.regra.testes.HibernateUtility.(HibernateUtility.java:22)</blockquote>
urubatan

coloca isto na classe:

@SequenceGenerator(name = "SEQ_CLOG", sequenceName = "SEQ_CLOG")

e isto no campo:

@Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ_CLOG")

edvaldo.santiago

Urubatan…
Cara mais uma vez vc consegui mostrar a luz no fim do túnel…
Valeu CAMARADA… muito obrigado o esquema funcionou certinho…

Muito obrigado mesmo.

:smiley:

P

estou tendo o mesmo problema só que estou usando o Oracle, quando usava o postgree rodava legal, mas com o oracle, levantou a mesma excecao.

alguem sabe o q eh?

AlexandreNeves

Estou com o mesmo problema, sendo que eu tenho uma classe pai onde todos herdam dessa classe
e quando tento inserir no banco (Postgree) da o erro

org.hibernate.AnnotationException: Unknown Id.generator: SEQ

Ai vai minhas classes

@MappedSuperclass
public class EntidadeBase implements Serializable{
	
	private static final long serialVersionUID = -4864986720166453779L;

	@Id
	@Column(name = "ID")
	@GeneratedValue(strategy=GenerationType.IDENTITY, generator="SEQ")
	private Long identificador;

	@Column(name = "DTHRCADASTRO", nullable = false, updatable = false)
	@Temporal(TemporalType.TIMESTAMP)
	private Date dtHrCadastro;

                ...
@Entity
@Table(name = "AUXESP_CATEGORIA")
@SequenceGenerator(name = "SEQ", sequenceName = "AUXESP_SEQ_CATEGORIA")
public class Categoria extends EntidadeBase {

	private static final long serialVersionUID = -1846852918546501897L;

	@Column(name = "NOME", nullable = false)
	private String nome;

	@Column(name = "DESCRICAO")
	private String descricao;

ja tentei GenerationType.IDENTITY, GenerationType.AUTO e GenerationType.SEQUENCE e nada funciona.
A Sequence esta criada no banco…

alguem me ajuda por favor.

Obrigado

H

AlexandreNeves estou com o mesmo problema que vc passou neste tópico velho, se puder postar como vc resolveu agradeço, Abç!

Criado 15 de agosto de 2006
Ultima resposta 29 de mai. de 2012
Respostas 10
Participantes 8