Estou tendo problemas quando tento gravar algum bean no banco, o hibernate reclama e exibe a seguinte mensagem
select nextval ('hibernate_sequence')
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing
É a primeira vez que trabalho com postgreSQL. No MySQL gravava normal com as mesmas configs.
O que devo alterar?
Acredito que seja algo com o equivalente ao auto_increment do MySQL
Alguma dica galera?
Não estou usando JPA, to usando hibernate mesmo. Muda alguma coisa?
Para cada tabela vou ter que criar uma sequence?
E
Evandro_Contato
Cara, na verdade, da maneira como eu utilizo aqui, o sequence já é gerado automaticamente, pego somente o nome lá no pgadmin.
Quando crio a tabela, ja coloco o campo chave como serial, ou bigserial, e automaticamente o postgres já cria a sequence padrão.
abs,
Evandro
narciso.benigno
Pode ser basicamente 2 coisas:
Você está tentando salvar um objeto que tem outro objeto, e este outro objeto não está salvo e não há a configuração de cascata para este outro objeto.
Ou você está tentando dar um update, em um objeto sem o id, o que não me parece, já que o dialeto do PostgresSQL pelo log que você mandou ele executou o select da sequence.
Abraço,
bglbruno
Evandro_Contato:
Cara, na verdade, da maneira como eu utilizo aqui, o sequence já é gerado automaticamente, pego somente o nome lá no pgadmin.
Quando crio a tabela, ja coloco o campo chave como serial, ou bigserial, e automaticamente o postgres já cria a sequence padrão.
abs,
Evandro
Na classe, como faço para falar que o indice é do tipo Serial ?
Narciso, é isso ai, essa minha classe Equipamento tem um relacionamento @OneToOne
O cascade está apenas para o Remove, se ela não for salva previamente, ele vai dar o erro que aparece, para fazer o insert você deve colocar o cascade CREATE
E
Evandro_Contato
Na classe ela fica como int,
Na criacao da tabela no pgadmin vc coloca que o campo é do tipo serial para int na classe, ou na bigserial, sendo dai long na classe,
Qdo vc cria a tabela, ele identifica que vc colocou o tipo do campo como serial, entao cria o campo do tipo int na tabela e automaticamente cria a sequence, faz um teste ai no seu pgadmin para vc ver o comportamento
abs,
Evandro
bglbruno
Valeu pessoal! Consegui resolver com a dica do raf4ever e do narciso.benigno, muito obrigado galera!
Evandro, muito obrigado também, me ajudou a encontrar o caminho