Não consigo adicionar dados ao banco de dados com os “Id’s” em Sequencia
nao consigo formar um auto-increment com a Sequence …
Utilizo da seguinte forma
import org.hibernate.annotations.BatchSize;
@Entity
@Table(name="videos", schema="noffa")
@BatchSize(size=0)
public class Video implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "seq_video", sequenceName = "seq_video")
@GeneratedValue(strategy=GenerationType.AUTO, generator="seq_video")
public Long id;
......
e me é Voltado os seguintes erros :
" ERROR (JDBCExceptionReporter.java:101) - ERRO: valor nulo na coluna “id” viola a restrição não-nula
Caused by: org.postgresql.util.PSQLException: ERRO: valor nulo na coluna “id” viola a restrição não-nula "
parece que o codigo nao consegue puxar a Sequencia e nao o adiciona …
Alguem ja passou por isso , ou possui alguma solução?
hmm Entendi … Parece que é o unico Jeito mesmo … pois aqui o annotaton do Hibernate nao consegue puxar de jeito nenhum
a Sequence do Banco e Jogar no Objeto …
Se alguem souber outra soluçao ^^ …
Poiseh , Acho que nao faz diferença de declarar a SequenceGenerator abaixo da @Entity
Continua Dando o mesmo erro , ele parece que nao acha e Joga Nulo para o Campo ,
Acho que a solução vai ter que ser igual a do Tiburcio , creio que é o unico Jeito =\
é, tem que ver isso tbm, o meum banco usava o schema padrão, quando a gente tentou utilizar com schema ficava dando pau, mas era de sequence não encontrada no banco.
é, tem que ver isso tbm, o meum banco usava o schema padrão, quando a gente tentou utilizar com schema ficava dando pau, mas era de sequence não encontrada no banco.[/quote]
Sim… no meu tbm dava…
até que eu fiz dessa maneira e funcionou corretamente…
e agora declaro com a strategy: @GeneratedValue(strategy= GenerationType.SEQUENCE, generator=“noffa.seq_video”)
ERROR (JDBCExceptionReporter.java:101) - ERRO: erro de sintaxe em ou próximo a "call"
Posição: 1
log4j:ERROR No output stream or file set for the appender named [R].
Exception in thread “main” org.hibernate.exception.SQLGrammarException: could not get next sequence value
e agora declaro com a strategy: @GeneratedValue(strategy= GenerationType.SEQUENCE, generator=“noffa.seq_video”)
ERROR (JDBCExceptionReporter.java:101) - ERRO: erro de sintaxe em ou próximo a "call"
Posição: 1
log4j:ERROR No output stream or file set for the appender named [R].
Exception in thread “main” org.hibernate.exception.SQLGrammarException: could not get next sequence value
alguem sabe me Informao motivo deste erro?[/quote]
provavelmente ja tem um valor inserido no teu banco de dados e ele ta com o valor de inserção 1 e ja deve ter um valor no 1
tente verificar o ultimo valor inserido e ver se bate com o valor que tem na sua sequence no banco de dados!
Qlqer coisa manda msg denovo
se não for isso… verifica se com o .AUTO funciona e se nao funcionar… verifica se tu ta chamando a sequence certa no BD
CREATE TABLE noffa.videos
(
id integer NOT NULL,
titulo character varying(64) NOT NULL,
descricao character varying(64) NOT NULL,
url character varying(64) NOT NULL
)
onde não ha registros nenhum …
log4j:WARN Are you using FileAppender instead of ConsoleAppender?
Hibernate: call next value for noffa."seq_video"
2009-12-15 23:46:38,276 ERROR (JDBCExceptionReporter.java:101) - ERRO: erro de sintaxe em ou próximo a "call"
Posição: 1
log4j:ERROR No output stream or file set for the appender named [R].
Exception in thread “main” org.hibernate.exception.SQLGrammarException: could not get next sequence value
log4j:WARN Are you using FileAppender instead of ConsoleAppender?
Hibernate: call next value for noffa."seq_video"
2009-12-15 23:46:38,276 ERROR (JDBCExceptionReporter.java:101) - ERRO: erro de sintaxe em ou próximo a "call"
Posição: 1
log4j:ERROR No output stream or file set for the appender named [R].
Exception in thread “main” org.hibernate.exception.SQLGrammarException: could not get next sequence value
[/quote]
Tenta excluir a sequence e criar novamente meu…
Da um clean no teu projeto pra ver se ele nao ta pegando sujeira!
Tenta criar a sequence novamente e inserir… tenta em outro banco… cria um novo banco e cria as sequence pelo SchemaExport soh pra fazer um teste…
Realmente não consegui , e isto esta acontecendo com qualqer Entidade que crio e tento Gerar o Auto-increment
Mas Agradeço a Ajuda ai Galera , Valeu a Força!
Cara se vc estiver usando o Postgresql, normalmente isso aconteceo tipo da sua Id e diferente no banco, ai hibernate envia para o banco o valor 0 no campo id…
Tente deixar o campo id na classe como nulo, e veja se a seq e gerada, se o erro persistir tente criar uma trigger no banco
uma trigger before insert na tabela que vc esta usando e mande um
new.nome do campo id = (‘nome da seq’::regclass) // se for postgresql
return new;
desta forma o BD fica encarregado de alterar a sequencia, fazendo com o q o hibernate mande nao altera no banco…