[Resolvido] Erro Hibernate ao tentar persistir: Field 'xxx' doesn't a default value

8 respostas
J

Já vasculhei diversos posts aqui e em outros sites, mas não consegui resolver, alguem poderia me ajudar?

Galera essa é minha classe:

@Entity
@Table(name="chamado") 
public class Chamado implements Serializable {
	
	@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="id_chamado")
	private Long idChamado;
        
@ManyToOne(fetch = FetchType.LAZY) 
	@JoinColumn(name = "id_chamado_pai", insertable = true, updatable = true, nullable = true) 
	private Chamado chamadoPai;

Ao tentar salvar esse objeto, estou recebendo o seguinte erro:

Caused by: java.sql.SQLException: Field 'idChamado' doesn't have a default value

Se alguem ja viu essa zica, por favor fique a vontade para ajudar :smiley:

8 Respostas

A

você selecionou a opção no banco de dados de auto incremento?

Posta todo seu código ai…

H

adi_silva:
você selecionou a opção no banco de dados de auto incremento?

Posta todo seu código ai…

Pensei a mesma coisa.

Se a tabela foi criada na mão, e não pelo hibernate, você precisa alterar a tabela e colocar o campo id como autoincremento (para mysql e para sql server).

No caso de postgres e oracle você precisa utilizar sequence.

Esse post mostra como configurar uma sequence: JPA: Mini Livro - Primeiros passos e conceitos detalhados.

A

Helbert Coelho, link show. estou começando a andar com hibernate. Vou dar uma lida em seu blog. vlw

J

Fala galera,

obrigado pela atenção. Então, eu havia criado a tabela ‘manuelmente’ sim, mas tinha colocado o auto incremento, porém eu não havia criado o índice de único para a coluna. Feito a criação de índice único o Hibernate conseguiu popular.

Que fique registrado para quem se deparar com erro semelhante :stuck_out_tongue:

H

JackOld:
Fala galera,

obrigado pela atenção. Então, eu havia criado a tabela ‘manuelmente’ sim, mas tinha colocado o auto incremento, porém eu não havia criado o índice de único para a coluna. Feito a criação de índice único o Hibernate conseguiu popular.

Que fique registrado para quem se deparar com erro semelhante :stuck_out_tongue:

uia, não sabia que isso influenciava. :shock:

Eu trabalho com MySQL e sempre que crio uma tabela nova eu já saio marcando por padrão, não sabia que daria logo esse tipo de problema. O.o

J

Pois é eu tmbm não, só que eu só marcava o índice de primary key…rs na verdade eu esbarrei nessa opção de unique e salvei aí funfou…rsrs

M

é meio tarde, porém, pode ajudar alguém …

eu estava tomando o mesmo erro, e quando fui ver era pq eu tinha esquecido de colocar a anotation em cima da super classe (JOINED, PERCLASS, “o outro eu esqueci”)

mas fica ai a dica. coisas que o cansaço faz com a pessoa.

S

pessoal, estava com o mesmo problema, e fiz o seguinte:

Na classe de persistencia:

@JoinColumn(name="situacao_mesa", nullable=false, insertable=false, updatable=false)

para:

@JoinColumn(name="situacao_mesa", nullable=false, insertable=true, updatable=true)

e no mapeamento .xml:

<many-to-one name="dlvSituacaoMesa" class="br.com.jvmsoftware.deliveryjava.mapeamento.DlvSituacaoMesa" update="false" insert="false" fetch="select">

para:

<many-to-one name="dlvSituacaoMesa" class="br.com.jvmsoftware.deliveryjava.mapeamento.DlvSituacaoMesa" update="true" insert="true" fetch="select">

Espero ter ajudado

Criado 8 de dezembro de 2012
Ultima resposta 3 de set. de 2013
Respostas 8
Participantes 5